CentOS 7 编译安装 Python 3.10
公司某些环境还在用着老掉牙的 CentOS 7 系统,为了运行一个 python3 的脚本费劲搞半天。由于部署机器的 GLIBC 版本老旧为 2.17,并且无法升级,只能在 Docker 中基于同版本的 GLIBC 构建一个 Python 3的环境用于编译可执行脚本。
P.S. 直接用第三方源安装编译好的 Python 是不够的,通过 Pyinstaller 打包时可能会缺少 so 文件。
准备:
- CentOS 7 Docker镜像,尽量与目标机器版本一致
- Docker
- 最好能连接外网
安装
环境依赖
yum install gcc perl zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gdbm-devel db4-devel libpcap-devel xz-devel make -y
安装 Openssl 1.1.1
该步骤非常重要,必须现行安装,Centos 7 默认的 Openssl 版本过低,会导致 Python 缺少 ssl 模块,或者 某些包不可用。
编译安装
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar -zxf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g
./config --prefix=/usr/local/openssl
make -j6
make install
mv /usr/bin/openssl /usr/bin/openssl.bak # 无该文件可忽略
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
配置 ldconfig
vi /etc/ld.so.conf
, 在最后新增一行:
/usr/local/openssl/lib
- 执行
ldconfig -v
验证
openssl version
编译安装 Python
wget https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz
tar -xvzf Python-3.10.14.tgz
./configure --enable-shared --with-openssl=/usr/local/openssl
make -j6
make install
cp --no-clobber ./libpython3.10.so* /lib64/
chmod 755 /lib64/libpython3.10.so*
pythn3 -V
pip3 -V