Centos7.9 使用宝塔部署Python3.12 .0

使用宝塔安装Python3.12运行之后提示ImportError: No module named _ssl,因为服务器有python2.7的项目正在运行,所以需要新建python3.12.0

因为 CentOS 7 默认的 OpenSSL 1.0.x 较旧,不满足 Python 3.12 的要求(需要 1.1.1 或更高)

1、安装 OpenSSL

CentOS 7 默认 OpenSSL 可能较旧(1.0.x)。安装 OpenSSL 1.1.1:

yum install epel-release
yum install openssl11 openssl11-devel

验证:

/usr/bin/openssl11 version

预期:OpenSSL 1.1.1x。

2. 编译并安装 Python 3.12.0

下载 Python 3.12.0

wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz
tar -xf Python-3.12.0.tar.xz
cd Python-3.12.0

1. 验证 OpenSSL 1.1.1 路径

检查 OpenSSL 版本

/usr/bin/openssl11 version

预期:OpenSSL 1.1.1x(如 1.1.1k)。

2、检查库文件

ls -l /usr/lib64/openssl11/libssl.so*
ls -l /usr/lib64/openssl11/libcrypto.so*
预期:显示 /usr/lib64/openssl11/libssl.so.1.1 和 /usr/lib64/openssl11/libcrypto.so.1.1(可能为符号链接)。

3.检查头文件

ls /usr/include/openssl11/openssl/ssl.h

预期:显示 /usr/include/openssl11/openssl/ssl.h。

4.确认系统 OpenSSL 未受影响

预期:OpenSSL 1.0.2x.

检查编译依赖

yum groupinstall "Development Tools"
yum install zlib-devel bzip2-devel openssl-devel openssl11-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

openssl11-devel 提供 /usr/include/openssl11.

libffi-devel 和 zlib-devel 防止核心模块问题。

使用指定的 OpenSSL 1.1.1 路径,禁用 PGO:

清理旧编译:如果之前编译过

make clean
rm -f config.cache
rm -rf profile-gen-stamp profile-opt-stamp

配置编译

CFLAGS="-I/usr/include/openssl11" LDFLAGS="-L/usr/lib64/openssl11 -lssl -lcrypto" ./configure --with-openssl=/usr/lib64/openssl11
 

CFLAGS="-I/usr/include/openssl11": 指定头文件路径。

LDFLAGS="-L/usr/lib64/openssl11 -lssl -lcrypto": 指定库路径和库。

--with-openssl=/usr/lib64/openssl11: 明确 OpenSSL 1.1.1 目录。

编译和安装

make -j$(nproc)
make altinstall

验证 SSL 支持

/usr/local/bin/python3.12 -c "import ssl; print(ssl.OPENSSL_VERSION)"

预期:OpenSSL 1.1.1x(如 1.1.1k)

验证核心模块

/usr/local/bin/python3.12 -c "import os; import _collections_abc; import site; print('Modules OK')"

预期:Modules OK.

验证 pip

/usr/local/bin/python3.12 -m pip --version

验证系统 OpenSSL 和 Python 2.7

openssl version
/usr/bin/python --version
yum --version
curl --version

这个时候,python3.12和python2.7已经可以同时运行了,如果需要通过宝塔python项目管理器管理,进入宝塔的python项目管理目录

cd /www/server/python_manager/versions/

创建虚拟环境
/usr/local/bin/python3.12 -m venv 3.12

ls 3.12/bin

预期:

activate  activate.csh  activate.fish  pip  pip3  pip3.12  python  python3  python3.12

然后通过python项目管理器就选择3.12就能正常添加项目,如果需要手动安装模块,可以进入项目目录,使用/bin/python3.12 -m pip install

你可能感兴趣的:(python,宝塔,python3.12,python项目管理器)