You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从源码安装Python3.11.1时SSL模块缺失求助(已装OpenSSL)

解决Python3.11.1源码编译后venv中pip无法使用SSL的问题

核心原因

Ubuntu 16.04默认提供的OpenSSL版本为1.0.2,而Python 3.10及以上版本仅支持OpenSSL 1.1.1及更高版本——即使安装了libssl-dev,版本不匹配也会导致Python编译时无法正常构建SSL模块。

解决步骤

1. 检查当前OpenSSL版本

执行命令确认版本:

openssl version

若输出为OpenSSL 1.0.2*,则必须升级OpenSSL。

2. 手动编译安装OpenSSL 1.1.1(LTS版本)

# 下载OpenSSL 1.1.1w
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

# 编译安装到/usr/local/ssl目录
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make -j$(nproc)
sudo make install

3. 配置系统优先使用新OpenSSL

# 配置动态链接库路径
echo "/usr/local/ssl/lib" | sudo tee /etc/ld.so.conf.d/openssl-1.1.1.conf
sudo ldconfig

# 更新环境变量,让系统优先调用新OpenSSL
echo "export PATH=/usr/local/ssl/bin:\$PATH" | sudo tee /etc/profile.d/openssl.sh
source /etc/profile.d/openssl.sh

# 验证版本更新结果
openssl version

此时应输出OpenSSL 1.1.1w或更高版本。

4. 重新编译Python3.11.1

先清理之前的编译残留:

cd Python-3.11.1
make clean
sudo rm -rf /opt/python/3.11.1

重新执行configure(指定新的OpenSSL路径):

./configure \
    --prefix=/opt/python/3.11.1 \
    --enable-shared \
    --enable-optimizations \
    --enable-ipv6 \
    --with-openssl=/usr/local/ssl \
    --with-openssl-rpath=auto \
    LDFLAGS=-Wl,-rpath=/opt/python/3.11.1/lib:/usr/local/ssl/lib,--disable-new-dtags

编译并安装:

make -j$(nproc)
sudo make altinstall

5. 验证SSL模块是否正常

/opt/python/3.11.1/bin/python3.11 -c "import ssl; print(ssl.OPENSSL_VERSION)"

若输出新安装的OpenSSL版本,说明SSL模块构建成功。

6. 测试venv中的pip

/opt/python/3.11.1/bin/python3.11 -m venv test_venv
source test_venv/bin/activate
pip install numpy

额外排查点

  • 执行./configure后,检查输出日志中是否有SSL modules will be built的提示;若没有,查看config.log文件中的错误信息定位问题。
  • 确保安装Python前已安装完整依赖:zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev liblzma-dev

内容的提问来源于stack exchange,提问作者Racid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:31:06