Ubuntu下Python3.6 pip3报错SSL模块未找到的解决方法
本文介绍在Ubuntu 16.04安装Python3.6后,使用pip3安装库时提示找不到SSL模块的故障。原因是编译Python时未指定--with-ssl参数。通过重新编译Python3.6并添加该参数,可解决pip无法调用SSL的问题,恢复正常安装。
问题现象:pip3提示找不到SSL模块
最近在Ubuntu 16.04系统上完成Python 3.6的安装后,执行pip命令时遇到异常,系统提示无法找到SSL模块,具体报错信息如下:
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https:*******: There was a problem confirming the ssl certificate:
Can't connect to HTTPS URL because the SSL module is not available. - skipping
Python3.6安装过程回顾
以下是我安装Python 3.6的具体操作步骤:
1.wget获取安装包:
wget http://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
2.解压安装包:
tar -xvzf Python-3.6.2.tgz
3.检查安装平台属性,系统是否有编译时所需要额库,以及库的版本是否满足编译需要
./configure
4.编译源码
make
5.成功编译之后,安装
sudo make install
安装完成后,计划使用pip3命令来安装numpy库。首先需要通过以下命令安装pip3:
sudo install python3-pip
pip3安装完毕后,尝试使用pip3安装numpy:
sudo pip install python-numpy
错误分析与原因排查
然而此时出现了错误,即前文提到的报错。其核心含义是:pip在尝试连接网络资源时需要使用SSL协议,但当前Python环境中的SSL模块不可用。
经过查阅相关资料,我确认系统中已预装OpenSSL,因此理论上该功能应当可用。为了验证,我尝试通过以下命令重新安装openssl:
sudo apt-get install openssl
sudo apt-get install libssl-dev
系统返回结果显示为“更新”(update),这证实系统内部已经存在openssl组件。尽管如此,pip3依然无法识别到ssl模块。
随后我进入Python 3环境,尝试导入ssl模块:
import ssl
执行结果报错,具体错误信息如下:
no moudle named _ssl
报错明确指出缺少名为_ssl的模块。接着,我切换到系统自带的Python 2.7环境中,再次执行ssl导入操作:
import ssl
Python 2.7环境中导入顺利,无任何报错。这表明系统层面的OpenSSL库是完整的,问题在于新安装的Python 3无法调用该模块,而旧版Python 2可以正常调用。
进一步查阅资料后发现,原因是在编译安装Python时,若未在./configure阶段添加--with-ssl参数,默认构建过程将不包含SSL相关功能。由于pip3依赖SSL进行网络通信,因此该功能缺失导致pip3无法正常工作。
解决方案:重新编译Python3启用SSL
解决方案是对Python 3.6进行重新编译安装,具体步骤如下:
cd Python-3.6.2
./configure --with-ssl
make
sudo make install
通过上述步骤重新编译安装后,新安装的Python 3即可支持SSL功能模块。再次进入Python 3环境执行import ssl,确认无报错后,重新使用pip3指令安装numpy,安装过程正常完成,问题得以解决。
以上就是在Ubuntu环境下解决Python3 pip3因缺少SSL模块而报错的完整方案,供各位参考。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













