在Windows 10系统中使用Python的包管理工具pip时,常常遇到类似如下的报错:
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://mirrors.aliyun.com/pypi/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='mirrors.aliyun.com', port=443): Max retries exceeded with url: /pypi/simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
这类错误导致无法通过pip安装或更新Python包,尤其是在非Anaconda自带的命令行窗口(例如普通cmd)下执行pip时尤为明显。本文将从根源分析此问题的成因,并给出Windows系统下的针对性解决方案,确保pip的正常运行。
Python的ssl
模块依赖底层操作系统的OpenSSL库支持,负责支持Python通过HTTPS协议进行安全通信。该模块不可用,通常是因为Python解释器运行时无法正确加载SSL相关的动态链接库(DLL),导致pip无法建立HTTPS连接。
Anaconda集成了Python环境及大量科学计算库,并且默认配置了自己的环境路径。它包含一套完整的Library\bin
目录,存放着OpenSSL所需的DLL文件(例如libcrypto-1_1-x64.dll
和libssl-1_1-x64.dll
)。如果环境变量配置不完整,普通cmd无法找到这些动态库,自然就会导致ssl模块不可用。
pip
命令正常。pip
命令时报错,提示无法使用ssl模块。D:\Anaconda3\Scripts
环境变量,忽略了关键的D:\Anaconda3
和D:\Anaconda3\Library\bin
目录。确保系统环境变量中Path包含以下3个路径:
D:\Anaconda3
D:\Anaconda3\Scripts
D:\Anaconda3\Library\bin
注意:很多用户只配置了
Scripts
,这导致在普通cmd下运行时无法找到SSL的DLL文件。
Path
,点击【编辑】。在新打开的CMD窗口中,执行:
python -c "import ssl; print(ssl.OPENSSL_VERSION)"
pip --version
如果正常显示OpenSSL版本号且pip能正常执行,说明配置成功。
假设Anaconda安装在D:\Anaconda3
目录:
路径 | 作用 |
---|---|
D:\Anaconda3 | Python解释器及核心库 |
D:\Anaconda3\Scripts | pip和conda命令行工具 |
D:\Anaconda3\Library\bin | OpenSSL等动态库,支持ssl模块 |
添加后执行:
set PATH=D:\Anaconda3;D:\Anaconda3\Scripts;D:\Anaconda3\Library\bin;%PATH%
pip install --upgrade pip
若无报错即完成配置。
Windows系统下pip报错“ssl module in Python is not available”大多因环境变量配置不完整导致。完整添加Anaconda安装目录及其Scripts
和Library\bin
路径至系统环境变量,即可解决该问题,恢复pip正常使用。本文希望能帮助大家快速定位并解决该类问题,避免影响开发效率。