Mac OS 10.15.2下Python3.6虚拟环境无法pip安装包(TLS/SSL证书问题)
解决brew安装的Python3.6虚拟环境SSL模块缺失问题
我之前在Mac OS 10.15.2(Catalina)上也碰到过一模一样的问题!核心原因是brew编译Python3.6时没有正确链接兼容的OpenSSL库,导致虚拟环境里的Python缺失SSL模块,pip无法访问HTTPS协议的PyPI源。给你一套亲测有效的解决步骤:
1. 彻底清理现有brew安装的Python3.6
首先要把旧的Python3.6完全卸载,避免残留文件干扰后续安装:
# 强制卸载Python3.6 brew uninstall --force python@3.6 # 删除残留的Python3.6系统目录 rm -rf /usr/local/lib/python3.6 # 同时删掉之前有问题的虚拟环境 rm -rf venv
2. 安装兼容的OpenSSL并配置环境变量
Catalina自带的OpenSSL版本和Python3.6兼容性不佳,我们先安装brew提供的OpenSSL 1.1,并让后续编译Python时能正确找到它:
# 安装OpenSSL 1.1 brew install openssl@1.1 # 临时配置环境变量(如果要永久生效,可将这三行添加到~/.zshrc或~/.bash_profile) export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib" export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include" export PKG_CONFIG_PATH="/usr/local/opt/openssl@1.1/lib/pkgconfig"
3. 重新安装Python3.6
现在用brew重新安装Python3.6,此时brew会使用我们刚才配置的环境变量,将Python3.6和OpenSSL正确链接:
brew install python@3.6
安装完成后,先验证SSL模块是否正常:
# 打开Python3.6交互环境 /usr/local/bin/python3 # 输入以下命令,无报错则说明SSL模块正常加载 import ssl print(ssl.OPENSSL_VERSION)
4. 重新创建虚拟环境并测试
最后重新创建虚拟环境,安装包验证问题是否解决:
# 创建虚拟环境 virtualenv -p /usr/local/bin/python3 venv # 激活虚拟环境 source venv/bin/activate # 尝试安装numpy测试 pip install numpy
额外注意事项
- 确保你使用的
virtualenv是对应Python3.6版本的,可执行pip3.6 install virtualenv重新安装,避免版本不兼容 - 尽量避免混用系统自带Python和brew Python的工具链,所有操作优先使用brew安装的Python3.6对应命令(比如
pip3.6而非系统的pip3)
内容的提问来源于stack exchange,提问作者KM.




