python3中SSLError错误处理

Posted 运维者说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3中SSLError错误处理相关的知识,希望对你有一定的参考价值。

在deepin中安装了python3.6,安装路径为/usr/local/python36,然后通过deepin自带的python2.7的pip安装了virtualenv:

sudo pip install virtualenv

创建python3.6的虚环境:

virtualenv -p /usr/local/python36/bin/python3 .venv/python36

切换到python36虚环境:

. /home/yanwei/.venv/python36/bin/activate

执行pip安装一些软件包:

sudo pip install paramiko

正常完成安装

这个时候打开pycharm,设置好python虚环境配置,发现pycharm使用的python36的虚环境中并不存在刚安装的paramiko模块。一度以为通过sudo执行的pip安装,非root用户无权访问。google来baidu去,都没找到想要的答案。只到自己忽然反应过来执行如下操作:

sudo which pip 
# 返回如下:
/usr/local/bin/pip

这个pip的路径并不是我想要的/home/yanwei/.venv/python36/bin/pip这个路径,这是deepin默认的python2.7的pip路径,也就是说我在开始执行sudo pip install paramiko的时候,其实是将paramiko安装在了系统默认的python2.7下面,所以pycharm里找不着这个模块。

于是我执行如下操作:

sudo /home/yanwei/.venv/python36/bin/pip install paramiko

却抛出异常如下:

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by \'SSLError("Can\'t connect to HTTPS URL because the SSL module is not available.",)\': /simple/pip/

具体解决方法参考如下文档:
https://www.cnblogs.com/mlgjb/p/7976561.html

大概意思就是python3在安装的过程中无法使用openssl,根据网上的一些博客的做法,要进入到python源码包解压后的那个目录下的Modules/Setup,注意Setup这个文件,只有在python完成安装一次之后才会生成这个文件。

将下图中标识的四行取消注释,然后再重新编译即可:
python3-ssl

执行编译安装:

sudo make
sudo make install

另外,还需要保证系统安装好了openssl及openssl的开发库:

sudo apt install openssl libssl-dev

至此,重新执行sudo /home/yanwei/.venv/python36/bin/pip install paramiko,然后在pycharm中查看paramiko模块是否安装,这个时候已经恢复正常。

以上是关于python3中SSLError错误处理的主要内容,如果未能解决你的问题,请参考以下文章

在python 3.6中处理自定义编码时遇到类型错误

学习 PyQt5。在我的代码片段中找不到错误 [关闭]

使用 Python3 gstreamer1.0 和 pylonsrc 使用 basler 相机和 pylon5 在处理循环中出现错误

python常用代码片段总结

ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] 线程化时的 Gmail

Caused by SSLError(“Can‘t connect to HTTPS URL because the SSL module is not available.“) 详解