解决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开发之字符串string操作方法实例详解
Nov 12 Python
Python实现的计数排序算法示例
Nov 29 Python
python的exec、eval使用分析
Dec 11 Python
python使用opencv按一定间隔截取视频帧
Mar 06 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
Python queue队列原理与应用案例分析
Sep 27 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
Oct 25 Python
Python编写一个验证码图片数据标注GUI程序附源码
Dec 09 Python
如何给Python代码进行加密
Jan 10 Python
详解如何修改python中字典的键和值
Sep 29 Python
Python 中的单分派泛函数你真的了解吗
Jun 22 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实现微信摇一摇周边红包
2016/01/04 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
PHP实现的激活用户注册验证邮箱功能示例
2017/06/06 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
js同时按下两个方向键
2007/12/01 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
JavaScript日期时间与时间戳的转换函数分享
2015/01/31 Javascript
js比较日期大小的方法
2015/05/12 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
linux 下以二进制的方式安装 nodejs
2020/02/12 NodeJs
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
python统计文本文件内单词数量的方法
2015/05/30 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
深入解析Python中函数的参数与作用域
2016/03/20 Python
Python进行数据提取的方法总结
2016/08/22 Python
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
2018/08/25 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
如何写python的配置文件
2020/06/07 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
EJB3.1都有哪些改进
2012/11/17 面试题
奥巴马竞选演讲稿
2014/05/15 职场文书
小学捐书活动总结
2014/07/05 职场文书
水利水电专业自荐信
2014/07/08 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
公司离职证明标准格式
2014/11/18 职场文书
2014年幼师工作总结
2014/11/22 职场文书
个人年终总结范文
2015/03/09 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python
Vue h函数的使用详解
2022/02/18 Vue.js