CentOS7源码编译安装Python3.X

下载Python源码包


说明
建议下载Gzipped source tarball格式的源码包

安装前准备


安装编译工具和依赖库

1
yum install zlib-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel -y

安装OpenSSL

https://www.openssl.org/source/下载OpenSSL安装包并解压到/usr/local/src/

1
tar zxf openssl-1.1.1w.tar.gz -C /usr/local/src/

安装perl

1
yum install perl -y

说明
执行./config时需要Perl5版本,否则会提示You need Perl 5.

编译并安装OpenSSL

1
2
3
4
cd /usr/local/src/openssl-1.1.1w/
./config --prefix=/usr/local/ssl-1.1.1w -d shared
make -j 4
make install

OpenSSL动态库路径添加到/etc/ld.so.conf

1
2
echo '/usr/local/ssl-1.1.1w/lib/' >> /etc/ld.so.conf
ldconfig -v | grep ssl

安装Python


解压Python源码包

1
tar zxf Python-3.12.1.tgz

编译安装Python

1
2
3
cd Python-3.12.1
./configure --prefix=/usr/local/python-3.12.1 --with-openssl=/usr/local/ssl-1.1.1w/ --with-openssl-rpath=auto
make && make install

说明
通过--with-openssl参数指定OpenSSL的路径为上一步的安装路径

配置PATH环境变量


因为CentOS7系统自带有Python2,如果直接执行python运行的是Python2,需要输入绝对路径/usr/local/python-3.12.1/bin/python3才可以运行刚才安装好的Python3,但是每次都要输入绝对路径太麻烦了,所以就需要编辑/etc/profile在文件末尾增加以下内容修改PATH环境变量

1
export PATH=$PATH:/usr/local/python-3.12.1/bin/

执行以下命令使配置生效

1
source /etc/profile

配置好PATH环境变量之后,直接执行python3即可运行Python3,方便了许多~

说明
如果你想执行pyhton的时候运行的是Python3而不是Python2,还需要最后做一件事情,那就是执行以下命令重建/usr/bin/python 这个软链接,将源文件指向/usr/local/python-3.12.1/bin/python3

1
2
rm -rf /usr/bin/python
ln -s /usr/local/python-3.12.1/bin/python3 /usr/bin/python

要注意的是这样操作之后会导致系统的yum命令无法使用,因为/usr/bin/yum中指定的Python解释器是/usr/bin/python,重建软链接后会变成调用Python3导致yum执行失败。因此为了使得yum命令可以正常使用,需要编辑/usr/bin/yum文件,将首行的#!/usr/bin/python修改为#!/usr/bin/python2

安装pip


pip官方安装文档:https://pip.pypa.io/en/stable/installation/

1
2
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py