解决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之import机制详解
Jul 03 Python
Python基于Tkinter实现的记事本实例
Jun 17 Python
Python内置函数 next的具体使用方法
Nov 24 Python
python使用openpyxl库修改excel表格数据方法
May 03 Python
Python3几个常见问题的处理方法
Feb 26 Python
Python 用matplotlib画以时间日期为x轴的图像
Aug 06 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 Python
pytorch加载语音类自定义数据集的方法教程
Nov 10 Python
python实现excel公式格式化的示例代码
Dec 23 Python
python 实现Requests发送带cookies的请求
Feb 08 Python
python开发制作好看的时钟效果
May 02 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目录与文件操作
2011/12/30 PHP
ThinkPHP写第一个模块应用
2012/02/20 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
零基础php编程好学吗
2019/10/11 PHP
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
2006/11/07 Javascript
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
2015/12/24 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
Vue中多元素过渡特效的解决方案
2020/02/05 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
python实现定制交互式命令行的方法
2014/07/03 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
2017/11/30 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
Python for循环与getitem的关系详解
2020/01/02 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
Python 远程开关机的方法
2020/11/18 Python
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
sort命令的作用和用法
2012/11/04 面试题
工商管理本科毕业生求职信范文
2013/10/05 职场文书
放飞蜻蜓反思
2014/02/05 职场文书
招聘专员岗位职责
2014/03/07 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
2015年入党积极分子培养考察意见
2015/08/12 职场文书