1. 查看python2的路径
[root@lidan /]# whereis python
python: /usr/bin/python /usr/bin/python2.7 /usr/bin/python.bak /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz
2. 安装编译 Python3的相关包
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel
这里面有一个包很关键libffi-devel
,因为只有3.7才会用到这个包,如果不安装这个包的话,在 make 阶段会出现如下的报错:
# ModuleNotFoundError: No module named '_ctypes'
3. 安装pip,因为 CentOs 是没有 pip 的。
#运行这个命令添加epel扩展源
yum -y install epel-release
#安装pip
yum install python-pip
4. 可以用 python 安装一下 wget
pip install wget
5. 我们可以下载 python3.7的源码包了
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
接下来
#解压缩
tar -zxvf Python-3.7.0.tgz
进入到解压后的文件夹
cd Python-3.7.0
先看一下有没有安装openssl-devel包
rpm -aq|grep openssl
如果没有,就安装一下,不然pip3没法装东西
yum install openssl-devel -y
接下来
#依次执行下面命令进行手动编译
./configure prefix=/usr/local/python3 --with-ssl
make && make install
如果最后没提示出错,就代表正确安装了,在/usr/local/目录下就会有python3目录。
6.我遇到的问题
但是实际在我安装时,我的机器上会出两个问题:
1,报这个错误 : zipimport.ZipImportError: can't decompress data; zlib not available
安装 zlib库
yum -y install zlib*
安装好了再执行make install 就不会报这个错误了
2,还有另外一个错误:ModuleNotFoundError: No module named '_ctypes'
3.7版本需要一个新的包libffi-devel,安装此包之后再次进行编译安装即可。
yum install libffi-devel -y
7. 添加软链接
添加软连接,否则运行python3命令会找不到的:
#添加python3的软链接
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
#添加 pip3 的软链接
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3
#测试是否安装成功了
python3 -V
8. 更改yum配置,因为其要用到python2才能执行,否则会导致yum不能正常使用(不管安装 python3的那个版本,都必须要做的)
vi /usr/bin/yum
把 #! /usr/bin/python 修改为 #! /usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
把 #! /usr/bin/python 修改为 #! /usr/bin/python2