如何判断pip install安装的包归属Python2.7还是Python3.6的site-packages?
pip install把包装到哪个Python版本的site-packages里? 这个问题太常见了,我帮你理清楚几个关键方法,确保你不会把包装错地方:
1. 直接查看pip的归属版本
最直观的方式是执行命令查看pip对应的Python版本:
如果你用的是
pip命令:pip --version输出会类似这样:
pip 19.2.3 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)
这里的python 2.7就明确告诉你,这个pip属于Python2.7,用它安装的包会存入Python2.7的site-packages目录。如果你用的是
pip3命令:pip3 --version输出会指向Python3.6:
pip 21.0.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
2. 查看pip的执行路径
有时候你可能不确定系统里的pip到底指向哪个版本,可以通过查看它的文件路径来确认:
在Linux/macOS下:
which pip which pip3比如输出
/usr/local/bin/pip,你可以进一步查看这个软链接的实际指向:ls -l /usr/local/bin/pip如果显示指向
../Cellar/python@2/2.7.18_1/bin/pip,那就是Python2.7的pip。在Windows下:
where pip where pip3输出的路径里会包含
python27或者python36字样,比如C:\Python27\Scripts\pip.exe就是Python2.7的pip。
3. 最稳妥的方式:直接用Python解释器调用pip
如果你怕搞混pip和pip3的对应关系,可以直接指定Python版本来调用pip,这样绝对不会出错:
装到Python2.7:
python2 -m pip install 你的包名Windows下可替换为:
py -2 -m pip install 你的包名装到Python3.6:
python3 -m pip install 你的包名Windows下可替换为:
py -3 -m pip install 你的包名这里
-m pip的意思是让Python解释器运行pip模块,完全绑定当前调用的Python版本,精准度拉满。
额外小技巧:避免版本混乱
如果经常需要在两个版本间切换,建议:
- 尽量用
python2 -m pip和python3 -m pip的方式安装,而非直接用pip/pip3,避免环境变量变化导致的错误。 - 考虑使用虚拟环境(Python3用
venv,Python2用virtualenv),每个虚拟环境绑定一个Python版本,安装的包完全隔离,不会互相干扰。
内容的提问来源于stack exchange,提问作者SubhasisM

