安装了Python3.7之后,遇到的一个很麻烦的坑就是与系统自带的ssl版本不兼容, Python3.7需要的openssl的版本为1.0.2或者1.1.x,这个requirements在config Python3.7的时候使用“--with-ssl”选项会报出。

Could not build the ssl module!
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().

Linux系统默认的openssl版本通常是:OpenSSL 1.0.1,可以使用命令查询系统的openssl版本:

openssl version

当前版本低于Python3.7的需求,会导致一些运行错误,比如pip3 install命令的失败,故需要进行openssl版本升级。

 (1)下载较高版本的openssl

https://www.openssl.org/source/openssl-1.1.1-pre8.tar.gz

(2)解压安装包

tar -xvzf openssl-1.1.1-pre8.tar.gz

(3)编译安装

cd openssl-1.1.1-pre8
./config --prefix=/usr/local/openssl no-zlib  # 新版openssl将安装在/usr/local/openssl目录下
make
make install

这样的话,新版本的openssl已经安装完毕,但是需要进行一些环境配置才能够继续使用。

来到/usr/bin目录下,可以发现已经有一个openssl可执行文件,这个就是系统自带的低版本,这里我们对它进行一个备份。

(4)备份原openssl配置

备份是个好的习惯,至少在安装新版本出错的时候可以回滚旧版本继续使用。

mv /usr/bin/openssl /usr/bin/openssl_bak  # backup
mv /usr/include/openssl/ /usr/include/openssl_bak

(5)备份好之后就可以为新版openssl配置软连接了

# 将安装好的openssl的openssl命令软连到/usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl

# 软链到升级后的libssl.so
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/local/lib64/libssl.so

# 将安装好的openssl命令软连到/usr/bin/openssl
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

(6)最后再修改下系统配置即可

# 写入openssl库文件的搜索路径
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf  # 需要root权限

# 使修改后的/etc/ld.so.conf生效 
ldconfig -v

(7)验证安装结果

Done.


==还是不能work==继续解决。。。

升级完新版本的openssl之后,需要对Pyhton3.7进行重新编译并更新软连接才能继续使用Python3.7。


参考博客

1、python3.7安装后ssl问题

2、Linux服务器安装python3.7

3、How to Compile and Install Python with OpenSSL Support?

GitHub 加速计划 / ope / openssl
25.12 K
9.99 K
下载
传输层安全性/安全套接层及其加密库
最近提交(Master分支:1 个月前 )
fd39d1c8 Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Shane Lontis <shane.lontis@oracle.com> (Merged from https://github.com/openssl/openssl/pull/25095) 1 个月前
ae87c488 Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Shane Lontis <shane.lontis@oracle.com> (Merged from https://github.com/openssl/openssl/pull/25095) 1 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐