解决Python找不到ssl模块问题 No module named _ssl的方法
本文详细解决Python安装后提示“No module named _ssl”的问题。主要步骤包括:通过yum安装openssl-devel依赖包,修改Python源码目录下的Setup文件以启用SSL支持,重新编译并安装Python。此外,还涵盖了升级Python后yum命令因语法兼容性问题报错的修复方法,以及pip的安装与环境变量配置流程。
Python找不到ssl模块的解决方法
完成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
>>>
针对此问题的解决步骤如下:
首先检查系统中的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 ~]$
使用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
安装依赖后,需要重新编译Python源码。
编辑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
保存配置后,执行重新编译操作。
进入Python源码解压目录,执行编译及安装命令。
[www@pythontab.com ~]$ cd /src/Python-2.7.15/
[www@pythontab.com ~]$ make
[www@pythontab.com ~]$ make install
最后进行测试,确认Python已能正常导入并使用ssl模块。
[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
>>>
注意:如果系统不需要保留旧版本的Python环境,则无需执行后续第6和第7步。
第6步:将旧版本的Python可执行文件重命名备份。
ll /usr/bin | grep python
mv /usr/bin/python /usr/bin/python2.7
第7步:删除原有的Python软链接,并创建指向最新Python版本的新的软链接。
rm -rf /usr/bin/python
ln -s /usr/local/bin/python3.6 /usr/bin/python
python -V
Python升级后yum命令报错的修复
在执行上述操作后,使用yum命令时可能会报错,错误信息指向文件“/usr/bin/yum”第30行的语法问题。
该问题出现的原因在于:
yum包管理工具是基于Python 2.x编写的。当将系统默认Python版本从2.x升级到Python 3.1.3(或更高版本如3.6.x)后,由于Python 2与Python 3在语法上存在不兼容性(例如print语句和异常处理语法的差异),导致yum无法正常运行。
修复该问题的解决方法是:
修改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
Python环境下pip的安装与配置
若需要安装pip包管理工具,请参考以下步骤:
首先下载相关的安装脚本文件。
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
执行下载好的安装脚本。
/usr/local/python/bin/python3 get-pip.py
配置系统环境变量,以便全局使用pip。
vim ~/.bash_profile
在配置文件末尾添加以下参数行:
export PATH=/usr/local/python/bin:$PATH
保存并关闭编辑器。
source ~/.bash_profile
使环境变量立即生效。
验证Python 3是否安装成功并可运行。
[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进行测试"
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









