zoukankan      html  css  js  c++  java
  • 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模块是否安装,这个时候已经恢复正常。

  • 相关阅读:
    Don’t Cross 32 GB!
    Kafka 是如何保证数据可靠性和一致性
    水塘抽样(Reservoir Sampling)问题
    实际场景HBase读写设计与实践
    Spark2.3整合kafka010手动管理offset
    周期性清除Spark Streaming流状态的方法
    Spark状态管理State的应用
    Effective C++
    马尔科夫链模型
    非线性规划
  • 原文地址:https://www.cnblogs.com/breezey/p/9061808.html
Copyright © 2011-2022 走看看