使用宝塔安装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。
下载 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
检查 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 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