解决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 基础学习第二弹 类属性和实例属性
Aug 27 Python
python函数参数*args**kwargs用法实例
Dec 04 Python
pycharm 使用心得(三)Hello world!
Jun 05 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
Python实现压缩和解压缩ZIP文件的方法分析
Sep 28 Python
Linux CentOS7下安装python3 的方法
Jan 21 Python
python实现守护进程、守护线程、守护非守护并行
May 05 Python
浅谈python中对于json写入txt文件的编码问题
Jun 07 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
Apr 11 Python
Django-silk性能测试工具安装及使用解析
Nov 28 Python
python 爬取腾讯视频评论的实现步骤
Feb 18 Python
解析python中的jsonpath 提取器
Jan 18 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
基于mysql的论坛(1)
2006/10/09 PHP
PHP+shell实现多线程的方法
2015/07/01 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
js实现登录验证码
2016/12/22 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
2017/04/26 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
Python2.x与Python3.x的区别
2016/01/14 Python
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
python 重定向获取真实url的方法
2018/05/11 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
python实现两个字典合并,两个list合并
2019/12/02 Python
Django REST framwork的权限验证实例
2020/04/02 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
海外淘书首选:AbeBooks
2017/07/31 全球购物
意大利消费电子产品购物网站:SLG Store
2019/12/26 全球购物
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
泰国在线书店:SE-ED
2020/06/21 全球购物
外贸员简历中的自我评价
2014/03/04 职场文书
2014两会优秀的心得体会范文
2014/03/17 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
2015年幼儿园班主任工作总结
2015/05/12 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js