解决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的多态性实例分析
Jul 07 Python
在Python的Django框架中为代码添加注释的方法
Jul 16 Python
python版本的读写锁操作方法
Apr 25 Python
浅谈Python中函数的参数传递
Jun 21 Python
Python实现针对中文排序的方法
May 09 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
实用自动化运维Python脚本分享
Jun 04 Python
python如何求解两数的最大公约数
Sep 27 Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 Python
Python脚本去除文件的只读性操作
Mar 05 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
Mar 30 Python
新手学python应该下哪个版本
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开发文件系统实例讲解
2006/10/09 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
推荐5款跨平台的PHP编辑器
2014/12/25 PHP
php简单获取目录列表的方法
2015/03/24 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
js 数值项目的格式化函数代码
2010/05/14 Javascript
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
小程序hover-class点击态效果实现
2019/02/26 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
Python中实现三目运算的方法
2015/06/21 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
用Python批量把文件复制到另一个文件夹的实现方法
2019/08/16 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
管理学专业个人求职信范文
2013/09/21 职场文书
经典禁毒标语
2014/06/16 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
Vue3.0 手写放大镜效果
2021/07/25 Vue.js