如何在CPython上安装networkx?SSL模块缺失致安装失败求助
解决CPython环境下无法安装networkx的问题
你的报错核心是当前CPython环境缺失SSL模块,导致pip无法通过HTTPS连接PyPI源,进而无法下载安装networkx。结合你使用的macOS Catalina 10.15.4,我整理了以下步骤来解决:
1. 确认SSL模块是否确实缺失
打开终端运行以下命令,检查当前python3环境能否正常加载SSL:
python3 -c "import ssl; print(ssl.OPENSSL_VERSION)"
如果出现ModuleNotFoundError或其他报错,说明确实存在SSL模块缺失的问题,继续下一步。
2. 修复SSL模块问题(两种常见场景)
场景一:使用系统自带的Python3
macOS Catalina自带的Python环境权限受限,且可能缺少完整的SSL支持,最简便的方式是用Homebrew重新安装带完整SSL的Python:
- 若未安装Homebrew,可在终端执行官方安装脚本:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - 用Homebrew安装Python:
安装完成后,Homebrew的Python会默认覆盖brew install pythonpython3命令(若未生效,可尝试执行brew link python修复路径),这个环境自带完整的SSL支持和对应版本的pip。
场景二:自行编译的CPython
如果是你自己编译的CPython,编译时可能未指定OpenSSL路径,导致SSL模块未被编译进去:
- 先通过Homebrew安装OpenSSL(提供编译依赖):
brew install openssl - 进入你的CPython源码目录,重新编译并指定OpenSSL路径:
编译完成后,新的CPython环境就会带有SSL模块了。./configure --with-openssl=/usr/local/opt/openssl make && make install
3. 安装networkx
修复SSL问题后,运行以下命令安装networkx(注意用python3 -m pip确保调用的是当前环境的pip,避免环境混乱):
python3 -m pip install networkx
4. 验证安装成功
运行以下命令确认networkx已正确安装:
python3 -c "import networkx; print(networkx.__version__)"
如果能正常输出版本号,说明安装成功,此时再运行你的GED_optima.py应该就不会出现ModuleNotFoundError了。
另外补充一点:你之前用的python3 -m pip3 install networkx语法有误,-m后面应跟模块名pip而非pip3,用python3 -m pip能更精准绑定当前Python环境的pip工具,避免多环境冲突。
内容的提问来源于stack exchange,提问作者Olha Kholod
相关产品推荐
相关产品推荐

