linux与python环境配置问题

linux与python环境配置问题

作为一个刚刚开始使用python的小白,很多流程与操作只能是照搬,无法理解其中的原因。在经历了最初的迷茫之后,慢慢的理解了一些逻辑,记在这里,一个是帮助自己记忆,一个是幻想着万一哪天能帮助到一些人

注:本人使用的是ubuntu版本的linux环境

python的安装与版本问题

python版本问题

一般在Linux中,python包的安装位置是/usr/bin,里面可能包含着好几个版本的python,比如一般系统默认的python 2.7(虽然很少用,但是不能卸载,是很多文件的必须语言),而在日常的工作中我们需要使用很多个不同版本的python,这就会引出一些问题,比如pip和dist-packages问题

pip是python自带的安装程序,因此它是绑定在自己版本的python下的,进而在使用pip命令进行包的安装时,它会自动将pachages安装在自己版本的dist-packages里面,而这种package无法被别的版本的python调用。

举个例子,如果原本默认版本是python3.6,而新安装了python 3.8。如果不卸载pip,重新安装的话,默认的pip是绑定着3.6的,使用pip3 install命令安装的包会被安装到python 3.6下面,因为无法调用,自然会报错如下

# ksb @ B705-TitanV in ~/bishe_code [13:29:51] 
$ /usr/bin/python3 /data/ksb/bishe_code/run_train.py
Traceback (most recent call last):
  File "/data/ksb/bishe_code/run_train.py", line 18, in <module>
    from visdom import Visdom
ModuleNotFoundError: No module named 'visdomd'

可以使用下面的命令对目前的package目录进行检查

$ python -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())"

得到的答案如下

>> /usr/lib/python3.6/dist-packages

当然,更加离谱的错误方式是,错误的使用了pip而不是pip3进行安装(小白的痛)。所有一定要记得分清python3,python还有pip,pip3!!!
前面讲到过,python一般link的是系统默认版本python2.7,而python3一般link的是用户自己安装的python3.x。如果希望更改相关的link,具体更改方式(以改绑python3为例)请见下面的详细教程

第一步,特定版本python的安装

下面列举了几种网上查到的方法

  1. 简单版本
#以root用户或具有sudo访问权限的用户身份运行以下命令,以更新软件包列表并安装必备组件:
sudo apt update
sudo apt install software-properties-common
#将Deadsnakes PPA添加到系统的来源列表中:
sudo add-apt-repository ppa:deadsnakes/ppa
#启用存储库后,请使用以下命令安装Python 3.8:
sudo apt install python3.8
#通过键入以下命令验证安装是否成功:
python3.8 --version
  1. 应该可以,,,我也记不得了QAQ
#更新软件包列表并安装构建Python所需的软件包:
sudo apt update
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget
#使用wget从Python下载页面下载最新版本的源代码,或者访问 https://www.python.org/ 网站下载:
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
#在选写本文时,最新版本是3.8.0。
#下载完成后,解压缩下载的文件:
tar -xf Python-3.8.0.tgz
#切换到Python源目录并执行configure脚本,该脚本执行许多检查以确保系统上的所有依赖项都存在:
cd Python-3.8.0
./configure --enable-optimizations
--enable-optimizations选项通过运行多个测试来优化Python二进制文件,这会使构建过程变慢。
#启动Python 3.8构建过程:
make -j 8
#为了加快构建时间,请修改-j以使其对应于处理器中的内核数,你可以通过键入nproc查找编号。
#构建过程完成后,输入以下命令安装Python二进制文件:
sudo make altinstall
#不要使用标准的make install,因为它将覆盖默认的系统python3二进制文件。
#Python 3.8已安装并准备使用,通过运行以下命令进行验证:
python3.8 --version
#输出应显示Python版本:

第二步,pip3的卸载方法

不更新pip3的话,在更改link以后肯定是用不了!QAQ,在通过python --version python3 --version确认了你的python/python3已经绑定为想要的版本以后,请输入

python3 -m pip uninstall pip
sudo apt-get remove python-pip python-pip

pip进行卸载,一定要卸干净,否则pip还是link到原有版本的,你用新版本python去调用`pip1肯定不好使!

第三步,进行版本绑定

#删除bin下面的python二进制文件,具体是python3还是python根据你的需求改变
$ sudo rm /usr/bin/python3
#将想要的python版本链接为python3/python
$ sudo ln -s /usr/bin/python3.6 /usr/bin/python3

在更改完毕之后可以通过python --version或者python3 --version来查询是否成功更改
类似的命令还有where python where python3来检查目前python地址

第四步,pip3的更新方法

卸载干净以后,再进行pip的安装

wget https://bootstrap.pypa.io/get-pip.py  #需要外网
python get-pip.py
python3 get-pip.py  #安装python3的pip

环境的建立

mkdir python38
python3 -m venv python38

有时可能会无法创造,因为没有更新venv的包

sudo apt-get install python3.8-venv#更改为自己要用的那个版本号!

即可创建名为python38的虚拟空间,空间使用的python版本为python3link到的版本

环境的激活

source /data/ksb/bishe_code/python38/bin/activate

当上面显示一个小括号的时候就说明你成功进入虚拟环境了!

环境的退出

deactivate

安装失败集锦

安装pip Command '('lsb_release', '-a')' 出错

参考博文
找不到lsb_release模块,执行如下命令(具体的路径需要根据系统进行调整!不能直接复制)

sudo cp  /usr/share/pyshared/lsb_release.py /usr/local/python3/lib/python3.7/

无法链接remote

也不知道发生了肾么事情,第二天来公司就连不上了emmm,试着重新配置了ssh,config,重启都失败了。最后重装了一下vscode,终于log中出现了有用的信息Error: Running the contributed command: '_workbench.downloadResource' failed,根据信息找到了参考博客,成功解决问题

posted @ 2021-04-16 22:41  小康要好好学习  阅读(307)  评论(0编辑  收藏  举报