服务器自带的python版本为2.7,需要升级到python3,遇到了一些坑,记录一下.

准备工作

安装和编译工作很顺利,但是发现pip版本不能被正确安装,出现下面的错误

1
2
3
4
5
6
7
8
9
10
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.4/multiprocessing/context.py", line 132, in Value
from .sharedctypes import Value
File "/usr/local/lib/python3.4/multiprocessing/sharedctypes.py", line 10, in <
module>
import ctypes
File "/usr/local/lib/python3.4/ctypes/__init__.py", line 7, in <module>
from _ctypes import Union, Structure, Array
ImportError: No module named '_ctypes'

查阅资料发现需要提前安装好一个依赖,pip才可以被正确安装

1
yum install libffi-devel

安装

1
2
3
4
5
6
7
8
9
10
11
# 下载
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
#解压源码包
tar -zxvf Python-3.7.0.tgz
#创建安装目录
mkdir /usr/local/python3
cd Python-3.7.0/
#安装到指定目录
./configure --prefix=/usr/local/python3
# 编译
make && make install

后续工作

设置软链接使得全局使用python3

1
2
3
cd /usr/local/python3
ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/bin/pip3 /usr/bin/pip

不知道pip安装位置的,可以使用命令来查看安装位置

1
which pip3

验证版本

1
2
pip3 -V
python3 -V

可以使用下述命令来查看软链接设置

1
ls -al /usr/bin | grep python

配置yum

升级 Python 之后,由于将默认的 python 指向了 python3,yum 不能正常使用,需要编辑 yum 的配置文件:

1
vi /usr/bin/yum

同时修改:

1
vi /usr/libexec/urlgrabber-ext-down

将 #!/usr/bin/python 改为 #!/usr/bin/python2.7,保存退出即可。

参考链接

https://www.jianshu.com/p/447750ec1186
https://docs.python.org/zh-cn/3/installing/index.html
https://zhuanlan.zhihu.com/p/34024112