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完成安装一次之后才会生成这个文件。
将下图中标识的四行取消注释,然后再重新编译即可:

执行编译安装:
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错误处理的更多相关文章
- python3.X中简单错误处理,和Python2区别
1.print 1.1 Print是一个函数 在Python3中print是个函数,这意味着在使用的时候必须带上小括号,并且它是带有参数的. >>> print 'hello wor ...
- python3中使用python2中cmp函数出现错误
在python2中我们经常会使用cmp函数来比较一些东西,但是在python3中,你再来使用这个函数的时候,发现就报错了,提示找不到这个函数,这是为啥呢? 答:新版的python已经舍弃这种用法 而在 ...
- python 安装中的错误解决
最近使用python3.5,其中遇到安装中的错误,现在记录下来,提个醒 1 安装setuptools 出现缺少 zlib模块 解决: 1 yum install zlib 2 yum install ...
- Python2和Python3中的字符串编码问题解决
Python2和Python3在字符串编码上是有明显的区别. 在Python2中,字符串无法完全地支持国际字符集和Unicode编码.为了解决这种限制,Python2对Unicode数据使用了单独的字 ...
- 详解:Python2中的urllib、urllib2与Python3中的urllib以及第三方模块requests
在python2中,urllib和urllib2都是接受URL请求的相关模块,但是提供了不同的功能.两个最显著的不同如下: 1.urllib2可以接受一个Request类的实例来设置URL请求的hea ...
- python3中使用builtwith的方法(很详细)
1. 首先通过pip install builtwith安装builtwith C:\Users\Administrator>pip install builtwith Collecting b ...
- Python3中性能测试工具Locust安装使用
Locust安装使用: 安装: python3中 ---> pip3 install locust 验证是否安装成功---> 终端中输入 locust --help ...
- Python “No module named” 以及在Python2中可以导入,但在python3中却出现的原因
Python “No module named” 以及在Python2中可以导入,但在python3中却出现的原因 原因之1: 例如有这样的一个包和它的模块: Test __init__.py Mod ...
- python3中的编码
python2字符串编码存在的问题: 使用 ASCII 码作为默认编码方式,对中文处理不友好 把字符串分为 unicode 和 str 两种类型,将unicode作为唯一内码,误导开发者 python ...
随机推荐
- Daily Scrum2 11.4
昨天的任务大家都已经完成,daily scrum记录的是当日已经完成的任务. 今日任务列表: 杨伊:完成团队作业之软件测评的功能部分 徐钧鸿:CodingCook的model和helper部分 张艺: ...
- 5233杨光--Linux第一次实验
学习计时:共14小时 读书:2小时 代码:7小时 作业:2小时 博客:3小时 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用Li ...
- 实验一linux 系统简介和实验二基本概念及操作
作业 zy e
- javascript中的call(),apply(),bind()方法的区别
之前一直迷惑,记不住call(),apply(),bind()的区别.不知道如何使用,一直处于懵懂的状态.直到有一天面试被问到了这三个方法的区别,所以觉得很有必要总结一下. 如果有不全面的地方,后续再 ...
- Javascript toString()、toLocaleString()、valueOf()三个方法的区别
Array.Boolean.Date.Number等对象都具有toString().toLocaleString().valueOf()三个方法,那这三个方法有什么区别??? 一.JS Array 例 ...
- hihocoder #1388 : Periodic Signal fft
题目链接: https://hihocoder.com/problemset/problem/1388 Periodic Signal 时间限制:5000ms内存限制:256MB 问题描述 Profe ...
- Internet History, Technology and Security (Week2)
Week2. History: The First Internet - NSFNet coursera address Supercomputers Justify a National Netwo ...
- JAVA对象的初始化过程
出处:http://blog.csdn.net/andrew323/article/details/4665379 下面我们通过两个例题来说明对象的实例化过程. 例1: 编译并运行该程序会有以下输 ...
- 如何在服务器(centOS系统)上运行JavaWeb项目
在上次的结对作业中(如果您对这几句话一头雾水的话就请忽视掉吧),因为我们小组制作的是Web版本的项目,需要布置在服务器上才算完成.故申请了一个腾讯云服务器用于运行项目,在这个过程中了解了如何在服务器上 ...
- node入门学习(一)
一.安装node.js 方式很多npm,git等,新手建议从官网上直接去下载node的安装包.一键安装. 二.创建一个web服务器. const http = require('http'); htt ...