解决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 加密的实例详解
Oct 09 Python
从CentOS安装完成到生成词云python的实例
Dec 01 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
python pandas 如何替换某列的一个值
Jun 09 Python
numpy向空的二维数组中添加元素的方法
Nov 01 Python
Python 实现文件打包、上传与校验的方法
Feb 13 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
安装Pycharm2019以及配置anconda教程的方法步骤
Nov 11 Python
解决ROC曲线画出来只有一个点的问题
Feb 28 Python
详解用python -m http.server搭一个简易的本地局域网
Sep 24 Python
Django celery异步任务实现代码示例
Nov 26 Python
如何用Django处理gzip数据流
Jan 29 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用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
jQuery插件MovingBoxes实现左右滑动中间放大图片效果
2017/02/28 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
Python中非常实用的一些功能和函数分享
2015/02/14 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
python之yield和Generator深入解析
2019/09/18 Python
python字符串格式化方式解析
2019/10/19 Python
python超时重新请求解决方案
2019/10/21 Python
python如何使用腾讯云发送短信
2020/09/17 Python
css3实现蒙版弹幕功能
2019/06/18 HTML / CSS
美国从事品牌鞋类零售的连锁店:Famous Footwear
2016/08/25 全球购物
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
办公室文秘自我评价
2013/09/21 职场文书
薪酬专员岗位职责
2014/02/18 职场文书
党员一句话承诺大全
2014/03/28 职场文书
英语故事演讲稿
2014/04/29 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
表扬信范文
2019/04/22 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
提取视频中的音频 Python只需要三行代码!
2021/05/10 Python
js前端图片加载异常兜底方案
2022/06/21 Javascript