如何基于CentOS 7.x编译安装Python 3.x?

Python

1 前言

一个问题,一篇文章,一出故事。
今天遇到CentOS 7.x Python版本过旧需要安装新版本的Python 3.7.9,于是通过编译解决。

2 最佳实践

2.1 CentOS环境配置

如何完成CentOS 7.x的基本服务?

2.2 安装前的准备

2.2.1 安装编译环境

yum -y install gcc gcc-c++ make expat-devel

2.2.2 编译安装兼容的OpenSSL版本

如何基于CentOS 7.x编译安装OpenSSL?

2.2.3 下载Python软件包

wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz

另外,以上只是演示,如下载异常或需要其他版本,请参阅如下链接,
https://www.python.org/downloads/source/
https://www.python.org/downloads/

2.3 编译安装

2.3.1 执行预编译

cd ~/Python-3.7.9
./configure --prefix=/usr/local/python-3.7.9 \
--with-openssl=/usr/local/openssl-1.1.0g \
--with-ensurepip=install \
--enable-optimizations

Python从设计上就运行多版本并存,所以无需卸载旧版本,另外根据安装的环境,你可能需要安装如下依赖包,

yum install -y openssl-devel libffi-devel ncurses-devel gdbm-devel zlib-devel bzip2-devel xz-devel sqlite-devel readline-devel tk-devel libuuid-devel nss-devel mpdecimal-devel

2.3.2 执行编译

cd ~/Python-3.7.9
make

2.3.3 编译并安装

cd ~/Python-3.7.9
make install

2.3.4 配置环境变量

vim /etc/profile.d/python-3.7.9.sh

加入如下配置,

export PYTHONHOME="/usr/local/python-3.7.9"
export PATH="${PYTHONHOME}/bin:$PATH"
if [ -z "$PYTHONPATH" ]; then
        export PYTHONPATH="${PYTHONHOME}/lib/python3.7/site-packages"
else
        export PYTHONPATH="${PYTHONHOME}/lib/python3.7/site-packages:$PYTHONPATH"
fi

修改完配置文件,你需要通过如下命令导入环境变量,

source /etc/profile.d/python-3.7.9.sh

2.3.5 测试安装

python3 -V

可见如下提示,

Python 3.7.9

2.3.6 配置库文件

echo '/usr/local/python-3.7.9/lib' > /etc/ld.so.conf.d/python3.7.9.conf

然后,你需要执行如下命令加载库文件,

ldconfig -v

2.3.7 升级基础软件包

python3 -m pip install --upgrade pip setuptools -i https://pypi.python.org/simple
Python
如何解决CentOS 7.x firewall-cmd Python不兼容问题?

1 前言 一个问题,一篇文章,一出故事。 今天基于CentOS 7.x编译并安装新版本的Python …

Python
如何解决CentOS 7.x yum Python不兼容问题?

1 前言 一个问题,一篇文章,一出故事。 今天基于CentOS 7.x编译并安装新版本的Python …

编译安装
如何基于CentOS 7.x编译安装OpenSSL?

1 前言 一个问题,一篇文章,一出故事。 今天遇到CentOS 7.x需要安装新版本的OpenSSL …