CentOS系统默认安装的python版本是2.X系列,python2版本与python3在语法上有点不一样,现在越来越多的软件需要python3来运行,而且由于https的网站越来越多,支持ssl就成了不可或缺的功能。
如果我们直接把python升级到3版本,但是系统自身的很多软件是依赖于python2的,例如yum。所以我们不能直接卸载原来的2版本,而是在保留原来的python2的基础上,多安装一个3版本。
安装的具体步骤如下:
1、安装源码编译器等工具
yum -y install gcc gcc-c++ autoconf automake make zlib zlib-devel
2、安装openssl
2.1 下载
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz
2.2 解压
tar -zxvf openssl-1.1.1d.tar.gz
2.3 指定安装路径,然后编译安装
cd openssl-1.1.1d ./config --prefix=/usr/bin/openssl make && make install
这里需要特别注意的是,如果不指定安装路径,默认会安装到/usr/bin/ssl,但include和lib目录不在这个目录里,会对后面编译安装python3造成麻烦。
3、安装python3
3.1 下载Python安装包
wget https://www.python.org/ftp/python/3.6.13/Python-3.6.13.tgz
3.2 解压
tar -xzvf Python-3.6.13.tgz
3.3 修改编译选项
cd Python-3.6.13 vi Modules/Setup.dist 搜索找到SSL,将附近几行进行如下修改: # Socket module helper for socket(2) _socket socketmodule.c ## 去掉这行前面的# # Socket module helper for SSL support; you must comment out the other # socket line above, and possibly edit the SSL variable: SSL=/usr/local/openssl ## 去掉连续4行前面的#,并且将本行修改为前面安装openssl的路径 _ssl _ssl.c \ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ -L$(SSL)/lib -lssl -lcrypto
3.4 指定安装路径,然后编译安装
./configure --prefix=/usr/local/python3 --enable-optimizations make && make install
4、创建python2的软连接
ln -s /usr/bin/python2.7 /usr/bin/python2 注意:这里可以先用ll /usr/bin/py*看一下原来python2的具体版本。有可能是python2.6。
5、对于依赖Python2的软件,修改代码(以yum为例)
vim /usr/bin/yum 将第一行"#!/usr/bin/python" 修改为"#!/usr/bin/python2"
6、运行yum,检查python2是否正常
yum update
7、如果出现错误,则重新安装python2(由于yum出现错误,因此不能用yum来安装。可以用rpm来安装)
7.1 下载:
wget http://mirror.centos.org/centos/7/updates/x86_64/Packages/python-2.7.5-90.el7.x86_64.rpm
7.2 安装
rpm --force -ivh --oldpackage python-2.7.5-90.el7.x86_64.rpm
由于系统原来已经安装过python2,因此这里需要加上–force参数来强制安装。安装完之后,再按照步骤6来确认python2正常。
8、建立软连接,将python指向Python3
rm /usr/bin/python ln -s /usr/local/python3/bin/python3.6 /usr/bin/python
9、测试安装结果
直接运行命令:
python
可以看到输出信息:
Python 3.6.13 (default, Feb 23 2021, 07:28:44) [GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import ssl >>> exit()
分别输入 import ssl(测试对ssl的支持)、exit(),按回车退出python。
安装成功!
近期评论