解决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使用urllib2获取网络资源实例讲解
Dec 02 Python
讲解Python中fileno()方法的使用
May 24 Python
Python中内建函数的简单用法说明
May 05 Python
Python numpy 点数组去重的实例
Apr 18 Python
python使用tornado实现登录和登出
Jul 28 Python
python基于SMTP协议发送邮件
May 31 Python
java判断三位数的实例讲解
Jun 10 Python
Python文件操作函数用法实例详解
Dec 24 Python
TensorFLow 不同大小图片的TFrecords存取实例
Jan 20 Python
浅谈python中频繁的print到底能浪费多长时间
Feb 21 Python
用Python制作灯光秀短视频的思路详解
Apr 13 Python
python+opencv实现视频抽帧示例代码
Jun 11 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连接mysql数据库代码
2009/03/10 PHP
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
php判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
2013/01/15 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
nodejs实现的一个简单聊天室功能分享
2014/12/06 NodeJs
jqTransform美化表单
2015/10/10 Javascript
jquery实现全选功能效果的实现代码
2016/05/05 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
angularjs指令之绑定策略(@、=、&amp;)
2017/04/13 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
使用python分析git log日志示例
2014/02/27 Python
Python随手笔记之标准类型内建函数
2015/12/02 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
python re模块findall()函数实例解析
2018/01/19 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
python 三元运算符使用解析
2019/09/16 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
python实现KNN分类算法
2019/10/16 Python
pycharm 中mark directory as exclude的用法详解
2020/02/14 Python
Python如何实现在字符串里嵌入双引号或者单引号
2020/03/02 Python
COSETTE官网:奢华,每天
2020/03/22 全球购物
党员学习十八大感想
2014/01/17 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
用JS实现飞机大战小游戏
2021/06/09 Javascript
MySQL分库分表详情
2021/09/25 MySQL