Mac下导入spaCy遇NotOpenSSLWarning问题求助
解决Mac上spaCy导入时的urllib3/LibreSSL警告问题
方案一:让Python链接到brew安装的OpenSSL@1.1
Mac系统默认Python依赖自带的LibreSSL,导致和urllib3 v2.0不兼容。需要让Python使用brew安装的OpenSSL版本:
- 先确认当前Python的SSL版本:
如果输出是python -c "import ssl; print(ssl.OPENSSL_VERSION)"LibreSSL 2.8.3,说明确实是系统SSL的问题。 - 配置环境变量,让系统优先使用brew的OpenSSL@1.1:
如果你用zsh,执行:
如果你用bash,把echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> ~/.zshrc echo 'export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"' >> ~/.zshrc echo 'export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"' >> ~/.zshrc.zshrc换成.bash_profile。 - 重启终端,用pyenv重新安装Python(确保Python编译时链接新的OpenSSL):
- 安装pyenv:
brew install pyenv - 配置pyenv到shell:
zsh用户:
bash用户对应修改echo 'eval "$(pyenv init --path)"' >> ~/.zshrc echo 'eval "$(pyenv init -)"' >> ~/.zshrc.bash_profile。 - 重启终端后,安装兼容的Python版本(比如3.9.16):
pyenv install 3.9.16 - 设置项目目录使用该Python:
cd 你的项目目录 pyenv local 3.9.16 - 创建并激活虚拟环境:
python -m venv venv source venv/bin/activate - 重新安装spaCy和指定版本的urllib3:
pip install spacy urllib3==1.26.6
- 安装pyenv:
方案二:直接忽略警告
如果上述方法无法解决,且警告不影响功能,可以在代码开头添加忽略警告的逻辑:
import warnings from urllib3.exceptions import NotOpenSSLWarning warnings.filterwarnings("ignore", category=NotOpenSSLWarning) import spacy
方案三:确认Python解释器路径
确保VSCode和Jupyter使用的是你配置好的虚拟环境/pyenv Python,而非系统默认Python:
- VSCode:点击左下角的Python解释器选择框,选择虚拟环境中的Python路径。
- Jupyter:打开Kernel菜单,选择Change Kernel,切换到对应的虚拟环境内核。
内容的提问来源于stack exchange,提问作者researcher.ella
相关产品推荐
相关产品推荐

