解决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中的变量、引用、拷贝和作用域的问题
Apr 07 Python
Python实现的Excel文件读写类
Jul 30 Python
详解Python中的array数组模块相关使用
Jul 05 Python
Python 转义字符详细介绍
Mar 21 Python
python 动态生成变量名以及动态获取变量的变量名方法
Jan 20 Python
python批量修改图片尺寸,并保存指定路径的实现方法
Jul 04 Python
python笔记_将循环内容在一行输出的方法
Aug 08 Python
浅谈Python_Openpyxl使用(最全总结)
Sep 05 Python
什么是python的列表推导式
May 26 Python
利用scikitlearn画ROC曲线实例
Jul 02 Python
Python descriptor(描述符)的实现
Nov 15 Python
pandas 按日期范围筛选数据的实现
Feb 20 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
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
2016/12/10 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
详解jQuery事件
2017/01/13 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
微信小程序开发之路由切换页面重定向问题
2018/09/18 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python中assert用法实例分析
2015/04/30 Python
python实现连接mongodb的方法
2015/05/08 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
Django框架多表查询实例分析
2018/07/04 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
2020/09/16 Python
详解Anaconda 的安装教程
2020/09/23 Python
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
大都会艺术博物馆商店:The Met Store
2018/06/22 全球购物
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
应聘医药代表职位求职信
2013/10/21 职场文书
初三开学计划书
2014/04/27 职场文书
求职信格式要求
2014/05/23 职场文书
选秀节目策划方案
2014/06/06 职场文书
刘胡兰观后感
2015/06/16 职场文书
企业愿景口号
2015/12/25 职场文书
大学学生会主席竞选稿怎么写?
2019/08/19 职场文书
导游词之桂林山水
2019/09/20 职场文书