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版本
需要注意的是,本章需要安装“openssl-1.1.1c”
2.2.3 下载Python软件包
wget https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tgz
另外,以上只是演示,如下载异常或需要其他版本,请参阅如下链接,
https://www.python.org/downloads/source/
https://www.python.org/downloads/
2.2.4 创建Python用户
useradd python310 echo 'python310pwd' | passwd --stdin python310
2.3 编译安装
2.3.1 执行预编译
cd ~/Python-3.10.0 ./configure --prefix=/usr/local/Python-3.10.0 \ --with-openssl=/usr/local/openssl-1.1.1c \ --with-openssl-rpath=auto \ --enable-shared \ --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.10.0 make
2.3.3 编译并安装
cd ~/Python-3.10.0 make install
2.3.4 配置环境变量
su - python310 vim ~/.bashrc
加入如下配置,
export PYTHONHOME="/usr/local/Python-3.10.0"
export PATH="${PYTHONHOME}/bin:$PATH"
export LD_LIBRARY_PATH="${PYTHONHOME}/lib/:$LD_LIBRARY_PATH"
if [ -z "$PYTHONPATH" ]; then
export PYTHONPATH="${PYTHONHOME}/lib/python3.10/site-packages"
else
export PYTHONPATH="${PYTHONHOME}/lib/python3.10/site-packages:$PYTHONPATH"
fi
alias python='/usr/local/Python-3.10.0/bin/python3.10'
alias pip='/usr/local/Python-3.10.0/bin/pip'
修改完配置文件,你需要通过如下命令导入环境变量,
source ~/.bashrc
2.3.5 测试安装
su - python310 python3 -V
可见如下提示,
Python 3.10.0
另外,如下命令测试pip,
su - python310 pip -V
可见如下提示,
pip 26.0.1 from /usr/local/Python-3.10.0/lib/python3.10/site-packages/pip (python 3.10)
2.3.6 配置库文件
echo '/usr/local/Python-3.10.0/lib' > /etc/ld.so.conf.d/python3.10.0.conf
然后,你需要执行如下命令加载库文件,
ldconfig -v
2.3.7 升级基础软件包
/usr/local/Python-3.10.0/bin/python3.10 -m pip install --upgrade pip -i https://pypi.python.org/simple /usr/local/Python-3.10.0/bin/python3.10 -m pip install --upgrade setuptools -i https://pypi.python.org/simple
没有评论