为什么通过Homebrew安装的Python3.9的ensurepip模块无法正常工作?
问题原因
Homebrew 安装的 Python 3.9 做了自定义路径适配:
- ensurepip 模块默认会把 pip 安装到 Python 编译时预设的框架内置 site-packages 路径,也就是你看到的
/usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/ - 但 Homebrew 为了统一管理第三方包,修改了 Python 的 sys.path 检索规则,不会检索上述框架内置的 site-packages 目录,只会优先读取
/usr/local/lib/python3.9/site-packages/和 Cellar 安装目录下的对应路径,因此即使 ensurepip 提示安装成功,Python 也找不到 pip 模块。
修复方案
方法1:重装 Homebrew 版 Python(最推荐)
Homebrew 官方维护的 python@3.9 包默认自带 pip,不需要手动执行 ensurepip,多数出现该问题都是安装过程中出现了异常。
执行以下命令重装即可:
brew reinstall python@3.9
重装完成后执行 python3 -m pip --version 即可正常识别 pip。
方法2:手动将 pip 安装路径加入检索列表
如果不想重装 Python,可以直接把 pip 所在的目录加入 Python 的永久检索路径:
- 进入 Homebrew Python 第三方包检索目录:
cd /usr/local/lib/python3.9/site-packages
- 新建路径配置文件:
echo "/usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages" > custom_paths.pth
- 重启 Python 终端即可正常识别 pip,之后可以执行
python3 -m pip install --upgrade pip把 pip 更新到最新版本。
方法3:重新安装 pip 到正确路径
也可以手动将 pip 安装到 Python 能检索到的目录:
- 下载官方 pip 安装脚本:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
- 执行脚本安装 pip:
python3 get-pip.py
- 安装完成后删除脚本即可:
rm get-pip.py
内容的提问来源于stack exchange,提问作者EdSanville
相关产品推荐
相关产品推荐

