ssl模块缺失表现为在python中执行如下命令
import ssl
会报错。
在网上一查,是因为没有安装好openssl, 于是参照https://blog.csdn.net/xiaoqingshe0716/article/details/84886976 完成了openssl的源码安装。安装完成后,openssl的安装位置在
/usr/local/openssl
在终端输入
openssl version -a
检测安装是否成功,并获取相关信息。
完成之后,需要重现编译安装python3.6
参照链接:
https://www.cnblogs.com/kaishirenshi/p/9894529.html
关键步骤在于:
# cd Python-3.6.8
# ./configure --prefix=/usr/local/python3.6
# make && make install
如此安装完成了之后,运行python3.6 输入
import ssl
仍然报错。
这句话只是为了检测ssl是否安装成功。其实能不能import ssl 并不关键,重要的是,如果不能import ssl,我们在使用pip 安装库的时候,就会报错了,会说ssl module in python is not availabel.
在网上搜索尝试了很多办法仍无效。
例如
./configure --prefix=/usr/local/python3.6 --with--ssl
,
./configure --prefix=/usr/local/python3.6 --with-ssl=/usr/local/openssl
,
./configure --prefix=/usr/local/python3.6 --with-openssl=/usr/local/openssl
等等,什么花招都试过了,但都不行。
后看到https://blog.csdn.net/qq_35711921/article/details/88950213 文中说,
python3.6之后编译源码安装不会自动关联ssl.需要在源码安装前,修改源码目录下/Modules/Setup和/Modules/Setup.dist 两个文件。
去掉红色区域前面的注释,入下图所示。 对Setup.dist执行同样的操作。
但是在执行
sudo make
的时候却报错了
/usr/bin/ld: cannot find -lcrypto
……
参考链接https://blog.csdn.net/yasi_xi/article/details/8658191 去添加软连接,
安装说的做了,但仍然不能成功
import ssl
.
最后,没有参照任何联系
,仔细观察了刚才修改的那两个文件。
一想,我的
/usr/loca
下面并没有ssl 啊,有的只是openssl ,于是,把文件修改成了这样
这次再重新执行python3.6 的源码编译安装过程,在
sudo make
的时候没有报错了。
最后安装完成python3.6 之后,常识
import ssl
便成功了!
后记:这个问题折腾了我好久,费了好多时间。也不知道是不是谁都向我这样,解决一个问题需要这么多时间的,太菜鸟了。
网上的参考链接很多,还是不能一股脑的跟着瞎操作啊,不然都是白费时间,还是得结合自己系统环境的情况仔细观察和思考才行。