解决Python找不到ssl模块问题 No module named _ssl的方法


Posted in Python onApril 29, 2019

python安装完毕后,提示找不到ssl模块:

[www@pythontab.com ~]$ python
Python 2.7.15 (default, Oct 23 2018, 18:08:43) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/python27/lib/python2.7/ssl.py", line 60, in <module>
import _ssl # if we can't import it, let the error propagate
ImportError: No module named _ssl
>>>

解决方法:

1. 查看openssl安装包,发现缺少openssl-devel包

[www@pythontab.com ~]$ rpm -aq|grep openssl
openssl-0.9.8e-20.el5
openssl-0.9.8e-20.el5
[www@pythontab.com ~]$

2. yum安装openssl-devel

[www@pythontab.com ~]$ yum install openssl-devel -y
#查看安装结果
[www@pythontab.com ~]$ rpm -aq|grep openssl
openssl-devel-1.0.1e-57.el6.x86_64
openssl-1.0.1e-57.el6.x86_64

3. 重新编译python

修改Setup文件

vi /src/Python-2.7.15/Modules/Setup

修改结果如下:

# Socket module helper for socket(2)
_socket socketmodule.c timemodule.c
# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
#SSL=/usr/local/ssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto

4. 重新编译

进入源码目录,重新编译安装

[www@pythontab.com ~]$ cd /src/Python-2.7.15/
[www@pythontab.com ~]$ make
[www@pythontab.com ~]$ make install

5. 测试,已可正常使用。

[www@pythontab.com ~]$ python
Python 2.7.15 (default, Oct 23 2018, 19:08:43)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>>

注:如需保留旧版本的就不需要执行 6 .7两部

6 重命名旧版本的python依赖

ll /usr/bin | grep python
mv /usr/bin/python /usr/bin/python2.7

7 删除旧的软链接,创建新的软链接到最新的python

rm -rf /usr/bin/python
ln -s /usr/local/bin/python3.6 /usr/bin/python
python -V

使用yum命令报错File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:

问题出现原因:

yum包管理是使用python2.x写的,将python2.x升级到python3.1.3以后,由于python版本语法兼容性导致问题出现

解决办法:

修改yum配置文件,将python版本指向以前的旧版本

# vi /usr/bin/yum
#!/usr/bin/python2.7
修改urlgrabber-ext-down文件,更改python版本

# vi /usr/libexec/urlgrabber-ext-down
#!/usr/bin/python2.7
Could not fetch URL https://pypi.python.org/simple/six/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping

如需安装pip

下载相关文件

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

执行

/usr/local/python/bin/python3 get-pip.py

添加环境变量

vim ~/.bash_profile

添加下面这条参数

export PATH=/usr/local/python/bin:$PATH

保存

source ~/.bash_profile

测试

执行

[root@huo ~]# python3
Python 3.6.5 (default, Apr 1 2018, 20:41:34)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

执行脚本如下:

vim install_python.sh

#!/bin/bash
echo "正在安装相关组件"
yum install -y openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc-c++ gcc openssl-devel
 
echo "下载安装包"
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
 
echo "正在解压安装包"
tar -xf Python-3.6.5.tgz -C /root/ && cd /root/Python-3.6.5/
 
echo "添加ssl支持"
cat >> /root/Python-3.6.5/Modules/Setup.dist <<"EOF"
_socket socketmodule.c
 
SSL=/usr/local/ssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
EOF
 
echo "正在编译安装Python"
./configure --prefix=/usr/local/python && make && make install
cd /root
 
echo "删除安装包"
rm -rf /root/Python-3.6.5.tgz && rm -rf /root/Python-3.6.5
 
echo "正在添加环境变量"
echo "export PATH=/usr/local/python/bin:$PATH">> ~/.bash_profile
source ~/.bash_profile
 
echo "安装完成,请执行python3进行测试"

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的Numpy入门教程
Apr 26 Python
python使用正则表达式分析网页中的图片并进行替换的方法
Mar 26 Python
初步讲解Python中的元组概念
May 21 Python
详解字典树Trie结构及其Python代码实现
Jun 03 Python
详解Python中heapq模块的用法
Jun 28 Python
详解使用python crontab设置linux定时任务
Dec 08 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
Jun 12 Python
python实现的登录与提交表单数据功能示例
Sep 25 Python
python3中sorted函数里cmp参数改变详解
Mar 12 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
Jul 13 Python
python实现监听键盘
Apr 26 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
Apr 29 #Python
python实现nao机器人手臂动作控制
Apr 29 #Python
python机器人运动范围问题的解答
Apr 29 #Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
Apr 29 #Python
Python 实现微信防撤回功能
Apr 29 #Python
python程序控制NAO机器人行走
Apr 29 #Python
Django web框架使用url path name详解
Apr 29 #Python
You might like
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
redis+php实现微博(三)微博列表功能详解
2019/09/23 PHP
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
js闭包所用的场合以及优缺点分析
2015/06/22 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
简单谈谈require模块化jquery和angular的问题
2017/06/23 jQuery
JS设置随机出现2个数字的实例代码
2017/07/19 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
2019/05/22 Javascript
JS中封装axios来管控api的2种方式
2019/09/11 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
简单的编程0基础下Python入门指引
2015/04/01 Python
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
python opencv摄像头的简单应用
2019/06/06 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
办公室内勤岗位职责范本
2013/12/09 职场文书
预备党员思想汇报
2014/01/08 职场文书
药品采购员岗位职责
2014/02/08 职场文书
商超业务员岗位职责
2014/03/12 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python
浅谈Redis缓冲区机制
2022/06/05 Redis