Linux服务器系统默认的python版本通常是python2,如果需要使用最新的python3那么我们可以编译安装源码包到独立目录,这和系统默认环境之间是没有任何影响的,python3和python2两个环境并存。
- Python官网下载python,下载之后的安装包“Python-3.7.3.tgz”保存到了本地的电脑上,需要scp的服务器的指定路径下。也可以使用wget命令直接在服务器上获取。
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
- 解压安装包
tar -xvzf Python-3.7.3.tgz
- 为pythoh3指定一个目录
mkdir /usr/local/python3
- 配置编译
./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl # --with-ssl最好配置上,否则在使用pip的时候可能会报TLS/SSL不可用的error,这里对ssl的版本也有要求,低版本的ssl会配置失败
在编译的过程中,指定了安装路径,指定了安装路径有利于后期对python3的使用与管理。
- 对源代码进行编译,生成可执行文件
make
- 安装
make install
果断报错:ModuleNotFoundError: No module named '_ctypes'
解决方法,安装需要的依赖
yum install libffi-devel
命令安装成功后,重新执行4、5、6步对应的3个命令。如果没有其他error抛出的话,到这里python3已经安装成功了,但是还需要进行一些配置才能够使用。
- 创建python3的软连接
mv /usr/bin/python /usr/bin/python_bak
ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
- 执行检查
- python2与python3版本切换
系统在很多时候仍然需要使用python2,比如yum命令,这时候就需要切换回python2版本。想要为某个特定用户修改python版本,只需要在其home目录下创建一个alias(别名)即可。然后打开该用户的 ~/.bashrc 文件,添加新的别名信息来修改默认使用的 python版本。
vi ~/.bashrc
# 切换python2
alias python='/usr/bin/python2.7'
# 切换python3
alias python='/usr/bin/python' # 这里不需要添加python3的版本号,因为/usr/bin/python已经是python3了
完成上面的操作后,需要重新加载 .bashrc 文件,使操作生效。
$ . ~/.bashrc
再次检查默认的python版本,切换成功。
安装Python3.7遇到的坑:
- pip install 找不到ssl
出现这个问题的原因是Python3.7需要更高级的ssl版本,需要升级ssl,研究了半天如何升级ssl最终还是没有成功。。。
考虑到python2和python3同时拥有pip,可以使用如下方法临时运行pip install:
python2 -m pip install XXX
python3 -m pip install XXX