如何让CentOS上的Python 3.6.5(altinstall)关联OpenSSL 1.0.2o?
解决Python 3.6.5无法关联OpenSSL的问题
我之前也碰到过一模一样的坑——用altinstall装完Python后,ssl模块直接失踪,连pip都没法正常用。核心原因其实很简单:编译Python的时候没正确链接到系统的OpenSSL开发库,咱们得重新编译Python补全这个依赖。
步骤1:先装OpenSSL开发依赖包
Python编译时需要OpenSSL的头文件和库文件,先确保系统上装了对应的开发包:
sudo yum install openssl-devel -y
如果已经装过,命令会提示已安装,直接跳过就行。
步骤2:重新编译Python 3.6.5
回到你当初放Python源码的目录(如果源码删了,就重新下载一份Python 3.6.5的源码包):
- 解压源码(新下载的话执行这步):
tar -xzf Python-3.6.5.tgz cd Python-3.6.5
- 清理之前的编译缓存,避免旧配置干扰:
make clean
- 配置编译参数,重点让Python识别系统的OpenSSL:
./configure --prefix=/usr/local --enable-shared --with-openssl=/usr
这里--prefix=/usr/local是altinstall的默认安装路径,--enable-shared生成共享库能避免后续依赖问题,--with-openssl=/usr指定系统默认的OpenSSL位置(如果你的OpenSSL是自定义安装的,把路径改成你自己的安装目录就行)。
4. 编译并安装:
make -j$(nproc) sudo make altinstall
-j$(nproc)会利用CPU多核心加速编译,能省不少时间。
步骤3:验证关联是否成功
安装完后直接测试ssl模块:
python3.6 -c "import ssl; print(ssl.OPENSSL_VERSION)"
如果能输出OpenSSL 1.0.2o 27 Mar 2018,就说明关联成功了。这时候再更新pip:
pip3.6 install --upgrade pip
之前的TLS/SSL报错应该就彻底消失了。
补充提醒
- 如果你的OpenSSL是自己源码编译安装的(不是系统自带的),
./configure时一定要把--with-openssl指向你的自定义安装路径,比如--with-openssl=/usr/local/openssl。 - 要是编译时还是提示找不到OpenSSL,检查下
/usr/include/openssl目录里有没有ssl.h这类头文件,没有的话大概率是openssl-devel没装对,重新安装一遍试试。
内容的提问来源于stack exchange,提问作者Zeno
相关产品推荐
相关产品推荐

