解决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 相关文章推荐
Python3实现从指定路径查找文件的方法
May 22 Python
深入解析Python中的变量和赋值运算符
Oct 12 Python
浅谈Python的垃圾回收机制
Dec 17 Python
Python获取某一天是星期几的方法示例
Jan 17 Python
python实现批量修改文件名代码
Sep 10 Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 Python
python 3.7.0 安装配置方法图文教程
Aug 27 Python
Python中安装easy_install的方法
Nov 18 Python
python 字典有序并写入json文件过程解析
Sep 30 Python
PyCharm+PyQt5+QtDesigner配置详解
Aug 12 Python
python 解决pycharm运行py文件只有unittest选项的问题
Sep 01 Python
python 合并多个excel中同名的sheet
Jan 22 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(7) php 字符串相关应用
2010/03/05 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
微信支付开发订单查询实例
2016/07/12 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
range 标准化之获取
2011/08/28 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
微信小程序如何播放腾讯视频的实现
2019/09/20 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
Python实现把xml或xsl转换为html格式
2015/04/08 Python
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
Python搜索引擎实现原理和方法
2017/11/27 Python
Python实现中一次读取多个值的方法
2018/04/22 Python
python创造虚拟环境方法总结
2019/03/04 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
给老婆的搞笑检讨书
2014/01/12 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
python基础之文件处理知识总结
2021/05/23 Python
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python