Python
1 前言
一个问题,一篇文章,一出故事。
今天遇到CentOS 7.x Python版本过旧需要安装新版本的Python 3.7.9,于是通过编译解决。
2 最佳实践
2.1 CentOS环境配置
2.2 安装前的准备
2.2.1 安装编译环境
yum -y install gcc gcc-c++ make expat-devel
2.2.2 编译安装兼容的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