Centos7.9安装Python3.12


Centos7.9安装Python3.12


引言

在Centos7.9中有时pip安装的包会依赖于python3.12,而Centos7.9中默认的python2.7,需要先安装python3.12,才能安装pip。另外Centos7.9中有一个python3.6的版本,如果pip安装的包满足python3.6的依赖,也可以安装。

查看Centos版本:

[root@lezhing ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

查看内核版本:

[root@lezhing ~]# uname -r
3.10.0-1160.119.1.el7.x86_64

安装openssl

python3.12 安装时依赖的openssl不能太低,所以需要先安装openssl。

查看默认版本:

[root@lezhing ~]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

在Centos7.9中,openssl版本不能过高。安装openssl1.1.1:

# 1. 安装编译 OpenSSL 所需的基础依赖
sudo yum install -y perl-core zlib-devel

# 2. 下载并解压 OpenSSL 1.1.1w(1.1.1 系列的最终长期支持版)
cd /tmp
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -xzf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w

# 3. 编译并安装到独立目录 /usr/local/openssl1.1.1
./config shared zlib --prefix=/usr/local/openssl1.1.1
make 
sudo make install

# 4. 配置动态链接库,让系统能找到它
echo "/usr/local/openssl1.1.1/lib" | sudo tee /etc/ld.so.conf.d/openssl-1.1.1.conf
sudo ldconfig

我们也可以先在本地下载openssl1.1.1w,下载地址为:https://www.openssl.org/source/openssl-1.1.1w.tar.gz,然后上传到Centos7.9中,再编译安装。

安装python3.12

查看默认版本:

[root@lezhing ~]# python --version
Python 2.7.5
[root@lezhing ~]# 
[root@lezhing ~]# python3.6 --version
Python 3.6.8
[root@lezhing ~]# 

安装python3.12:

# 1. 安装编译 python3.12 所需的基础依赖
sudo yum groupinstall "Development Tools" -y
sudo yum install zlib-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libpcap-devel xz-devel libffi-devel -y

# 2. 下载并解压 python3.12 (这里用清华源)
cd /tmp
wget https://mirrors.tuna.tsinghua.edu.cn/python/3.12.7/Python-3.12.13.tgz

3. 编译并安装到独立目录 
tar -xf Python-3.12.13.tgz
cd Python-3.12.13

LDFLAGS="-L/usr/local/openssl1.1.1/lib" \
CPPFLAGS="-I/usr/local/openssl1.1.1/include" \
./configure \
--prefix=/usr/local/python3.12 \
--with-openssl=/usr/local/openssl1.1.1 \
--enable-shared \
--with-openssl-rpath=auto

sudo make
sudo make altinstall

4. 配置动态链接库
echo "/usr/local/python3.12/lib" | sudo tee /etc/ld.so.conf.d/python3.12.conf
sudo ldconfig

5. 创建软连接
sudo ln -s /usr/local/python3.12/bin/python3.12 /usr/bin/python3.12
sudo ln -s /usr/local/python3.12/bin/pip3.12 /usr/bin/pip3.12

我们也可以先在本地下载python3.12,下载地址为:https://mirrors.tuna.tsinghua.edu.cn/python/3.12.7/Python-3.12.13.tgz,然后上传到Centos7.9中,再编译安装。

我们可以在安装过程过检查ssl模块是否生成:

1. 可以在make后搜索
find ./ -name "_ssl*.so"

2. 也可以在 make altinstall 安装后验证ssl模块是否生成:
/usr/local/python3.12/bin/python3.12 -c "import ssl; print(ssl.OPENSSL_VERSION)"

使用make altinstall是为了避免覆盖默认的python版本,导致系统崩溃。

在安装过程中如果出现错误,需要把安装目录下的文件删除:

cd /你的路径/Python-3.12.13

# 在安装包目录下彻底清理之前的编译缓存(必须做!)
make distclean

上面之所以安装到独立目录,是为了以后可以方便地切换python版本:

1. 删除 Python-3.12 版本
sudo rm -rf /usr/local/python3.12
sudo rm -rf /usr/bin/python3.12
sudo rm -rf /usr/bin/pip3.12
sudo rm -rf /etc/ld.so.conf.d/python3.12.conf
sudo ldconfig

pip 安装软件包

如安装免费的语音合成服务:

pip3.12 install edge-tts






参考资料


返回