最近在Ubuntu16.04上准备换一个python版本,它本身就有了两个版本,一个是python2.7,另一个是python3.5,这两个版本都是Ubuntu16.04自带的(不能删除)。我准备添加一个新的版本为python3.7,记录一下。
安装包下载
$ wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
解压安装包
$ tar -zxvf Python-3.7.4.tgz
进入Python-3.7.4目录下
$ cd Python-3.7.4
在/usr/local/目录底下创建一个安装目录
$ sudo mkdir -p /usr/local/python37
编译安装
$ ./configure --prefix=/usr/local/python37 --enable-optimizations
$ make
$ sudo make install
在~/.bashrc文件中添加环境变量
$ PATH=$PATH:$HOME/bin:/usr/local/python37/bin
$ source ~/.bashrc //这一句是后面发现错误后添加的
又因为需要将默认版本更换为python3.7,我们需要建立软连接
$ sudo mv /usr/bin/pip3 /usr/bin/pip3.bak
$ sudo ln -s /usr/local/python37/bin/pip3 /usr/bin/pip3
$ sudo mv /usr/bin/python /usr/bin/python.bak
$ sudo ln -s /usr/local/python37/bin/python3.7 /usr/bin/python
其中出现了一些错误,当我输入pip -V时,出现下面的错误
Traceback (most recent call last):
File "/home/xxx/.local/bin/pip", line 5, in <module>
from pip._internal.cli.main import main
ModuleNotFoundError: No module named 'pip._internal.cli.main'
当我输入pip3 -V时,出现下面的错误
Traceback (most recent call last):
File "/usr/bin/pip3", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python3.5/dist-packages/pip/__init__.py", line 11, in main
from pip._internal.utils.entrypoints import _wrapper
File "/usr/local/lib/python3.5/dist-packages/pip/_internal/utils/entrypoints.py", line 12
f"pip{sys.version_info.major}",
^
SyntaxError: invalid syntax
我也不记得当时情况如何了,参考文章
$ sudo wget https://bootstrap.pypa.io/pip/3.5/get-pip.py
$ python3 get-pip.py
$ sudo pip3 install --upgrade pip setuptools wheel
输入pip3 -V时,就不会出现错误了,但是pip3指向python3.5,我们又得按照上面的软连接来操作一下,把pip3指向python3.7。如果安装过程中,没有出现这两个错误,可以不用理会。
检查是否安装好了
出现上两幅图就算安装好了。
其实还有一个pip指向了python3.5,它本应该指向python2.7的,可以参考文章
--------------------------------------------------------分割线(更新)-----------------------------------------------------
然后我重启虚拟机后又出现了新的问题,如图所示
pip3的版本又指向了python3.5
NO MODULE NAMED 'PIP._INTERNAL.CLI.MAIN’问题
$ which pip3
$ sudo vim /home/xxx/.local/bin/pip3 //自己的pip3路径
from pip._internal import main
更改完成以后,如下图所示
在安装包的时候,又出现了问题
好像更新pip就可以了,但是实际发现更新的是python3.5的包
经过一番搜索,参考文章
$ sudo python -m pip install --upgrade pip //我们的默认python是3.7.4
如果出现下面的问题,大概是网络不稳定,重新多试几次。
然后
这就算成功了,但是中间还有个警告不在PATH中,参考文章
其实前面我们已经把路径添加进去了,实在不行那就再添加一次
$ PATH=$PATH:$HOME/bin:/usr/local/python37/bin
$ source ~/.bashrc //可能前面没有加上这一句
接下来
差不多就可以了,有一些警告我试了没有解决,但是好像不影响使用。
参考文章
解决ubuntu16.04安装pytorch时pip3报错的问题
ubuntu中python的安装及使用
ubuntu安装python3.7,并更新python默认指向为python3.7
Ubuntu18.04修改Python默认版本2.7->3.6
linux系统CentOS7.6编译安装python3
pip3在Ubuntu下的安装、升级、卸载
ubuntu 系统下使用pip:ImportError: No module named 'pip._internal’的解决
linux (centos7)配置python3 软链失败
Ubuntu下修改默认python及pip版本
pip版本问题
Ubuntu中python版本更改问题