解决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设计模式编程的代理模式与抽象工厂模式
Jan 16 Python
用python写的一个wordpress的采集程序
Feb 27 Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 Python
Python+matplotlib实现华丽的文本框演示代码
Jan 22 Python
Python基于递归算法求最小公倍数和最大公约数示例
Jul 27 Python
Pycharm取消py脚本中SQL识别的方法
Nov 29 Python
Python操作远程服务器 paramiko模块详细介绍
Aug 07 Python
python 三元运算符使用解析
Sep 16 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 Python
Django QuerySet查询集原理及代码实例
Jun 13 Python
Visual Studio code 配置Python开发环境
Sep 11 Python
在Python中实现字典反转案例
Dec 05 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里的JS打印函数
2006/10/09 PHP
php 注释规范
2012/03/29 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
Docker配置PHP开发环境教程
2016/12/21 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
PHP实现唤起微信支付功能
2019/02/18 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
Extjs学习笔记之七 布局
2010/01/08 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
Python实现基本线性数据结构
2016/08/22 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
Python控制Firefox方法总结
2019/06/03 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
实体的生命周期
2013/08/31 面试题
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
Java servlet面试题
2012/03/04 面试题
冬季施工防火方案
2014/05/17 职场文书
教师调动申请报告
2015/05/18 职场文书
工作收入证明模板
2015/06/12 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers
pytorch中的 .view()函数的用法介绍
2022/03/17 Python