作为一个刚刚开始使用python的小白,很多流程与操作只能是照搬,无法理解其中的原因。在经历了最初的迷茫之后,慢慢的理解了一些逻辑,记在这里,一个是帮助自己记忆,一个是幻想着万一哪天能帮助到一些人
注:本人使用的是ubuntu版本的linux环境
一般在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为例)请见下面的详细教程
下面列举了几种网上查到的方法
$ sudo apt-get install python3.8
sudo apt update
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
python3 get-pip.py #安装python3的pip
#删除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
的话,在更改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肯定不好使!
卸载干净以后,再进行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
即可创建名为python38
的虚拟空间,空间使用的python
版本为python3
link到的版本
source /data/ksb/bishe_code/py36/bin/activate
当上面显示一个小括号的时候就说明你成功进入虚拟环境了!
deactivate
原文:https://www.cnblogs.com/kangshuaibo/p/14669053.html