为什么用pip/pip3安装Python包失败,但python3 -m pip可正常安装?
问题根源分析
你的问题核心是Python解释器与pip绑定的版本不匹配,具体错位情况如下:
- 系统中
pip、pip3命令绑定的是Python 3.8,所有用这两个命令安装的包都会存放到/usr/local/lib/python3.8/site-packages目录下 - 你执行脚本调用的
python3命令实际对应Python 3.9.7,它只会从自身对应的3.9版本site-packages目录扫描依赖,完全不会读取3.8目录下的包,因此会抛出ModuleNotFoundError
修复命令生效的原因
python3 -m pip install numpy的调用逻辑是直接使用当前python3对应的内置pip模块执行安装,包会直接写入Python 3.9对应的site-packages目录,所以运行时可以正常读取。
版本错位的成因
你通过brew安装多版本Python后,PATH环境变量的优先级出现了偏差:Python 3.8的可执行文件路径优先级高于3.9的pip路径,导致pip/pip3调用的是3.8版本,而python3因为后安装或者brew的优先级设置,调用的是3.9版本,最终出现版本错配问题。
后续避免同类问题的方案
- 优先使用
[目标Python解释器] -m pip install [包名]的格式安装包,从根源上避免版本错配,比如要给当前的python3装包就固定用python3 -m pip install - 如果你要统一
pip3和python3的版本,可以执行brew link --overwrite python@3.9,将brew的Python默认绑定到3.9版本 - 如果不需要Python 3.8环境,可以直接执行
brew uninstall python@3.8清理冗余版本,避免后续再出现版本冲突
内容的提问来源于stack exchange,提问作者Dentrax
相关产品推荐
相关产品推荐

