已激活Python虚拟环境,为何pip3仍将unicorn-hat-sim全局安装而非安装到虚拟环境中?
问题分析与修复方案
嘿,我来帮你捋清楚这个问题:你明明激活了虚拟环境,结果pip3 install还是把包装到了全局的.local目录里,退出虚拟环境还能查到,核心原因是你调用的pip3并不是虚拟环境里的版本,而是全局的pip在执行安装操作。
先搞明白问题出在哪
激活虚拟环境后,先别急着安装,执行这两个命令看看路径:
which python which pip
正常情况下,输出应该指向你的虚拟环境目录,比如~/scripts/venv/unicorn-hat-sim/bin/python和对应的pip。如果输出是全局路径(比如/usr/bin/python3或者/home/rossgoodmancom/.local/bin/pip),那就是你的shell优先找到了全局的pip,没用到虚拟环境里的。
为什么会这样?大概率是你习惯用pip3,但虚拟环境里默认只有pip(和虚拟环境绑定的Python版本对应),而全局的pip3在PATH里的优先级更高,所以激活环境后用pip3还是会调用全局的。
一步步修复
1. 改用虚拟环境的pip命令
先退出当前虚拟环境,重新激活:
deactivate source ~/scripts/venv/unicorn-hat-sim/bin/activate
这次别用pip3,直接用pip来安装:
pip install unicorn-hat-sim
安装完后执行pip list | grep unicorn,再用pip show unicorn-hat-sim看路径,应该就会指向虚拟环境的lib/pythonX.X/site-packages目录了(X.X是你虚拟环境的Python版本)。
2. 如果还是不行,直接用虚拟环境pip的绝对路径
要是上面的方法没生效,那就直接指定虚拟环境里pip的完整路径来安装,绝对不会错:
~/scripts/venv/unicorn-hat-sim/bin/pip install unicorn-hat-sim
3. 清理全局的包(可选)
如果你不想全局环境里留着这个包,退出虚拟环境后执行:
pip3 uninstall unicorn-hat-sim
以后避免踩坑的小技巧
- 激活虚拟环境后,就用
python和pip命令,别再加3了——虚拟环境已经把对应版本设为默认,不用特意指定。 - 每次激活环境后,可以用
python --version确认下当前环境的Python版本,确保和你创建虚拟环境时用的版本一致。
内容的提问来源于stack exchange,提问作者Ross Goodman
相关产品推荐
相关产品推荐

