如何在Ubuntu 16.04中编译带有SSL支持的Python3.11?
解决Ubuntu 16编译Python3.11缺失_ssl模块问题
核心原因
Python 3.11要求OpenSSL版本至少为1.1.1,Ubuntu 16自带的1.0.2不满足该要求;且直接将自行编译的OpenSSL安装到/usr会与系统版本冲突,导致Python编译时无法正确识别。
解决步骤
清理残留文件
- 卸载系统自带的libssl-dev:
sudo apt purge libssl-dev - 删除/usr目录下自行编译的OpenSSL相关文件:
sudo rm -rf /usr/include/openssl /usr/lib/libssl* /usr/lib/pkgconfig/openssl.pc - 清理Python编译目录:
cd Python-3.11.x && make clean
- 卸载系统自带的libssl-dev:
独立编译安装OpenSSL 1.1.1
- 下载OpenSSL 1.1.1w(长期支持版):
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz - 解压并进入目录:
tar xf openssl-1.1.1w.tar.gz && cd openssl-1.1.1w - 配置编译参数并安装到独立目录:
./config --prefix=/usr/local/openssl-1.1.1 --openssldir=/usr/local/openssl-1.1.1 shared zlib make -j$(nproc) && sudo make install
- 下载OpenSSL 1.1.1w(长期支持版):
配置环境变量
- 临时设置环境变量,确保Python编译时优先找到新安装的OpenSSL:
export PATH=/usr/local/openssl-1.1.1/bin:$PATH export PKG_CONFIG_PATH=/usr/local/openssl-1.1.1/lib/pkgconfig export LD_LIBRARY_PATH=/usr/local/openssl-1.1.1/lib
- 临时设置环境变量,确保Python编译时优先找到新安装的OpenSSL:
重新编译Python3.11
- 进入Python源码目录,重新配置并编译:
cd Python-3.11.x ./configure --enable-optimizations --with-openssl=/usr/local/openssl-1.1.1 make -j$(nproc) && sudo make altinstall
- 进入Python源码目录,重新配置并编译:
验证模块
- 启动Python3.11并导入ssl模块,无报错则成功:
python3.11 -c "import ssl; print(ssl.OPENSSL_VERSION)"
- 启动Python3.11并导入ssl模块,无报错则成功:
内容的提问来源于stack exchange,提问作者ssemtner
相关产品推荐
相关产品推荐

