You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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.

火山引擎 最新活动