我创建了一个新的虚拟环境,但 pip 始终是“全局”环境
$ python3 -m venv MyVenv
$ source Myvenv/bin/activate
(MyVenv)$ which pip
/usr/local/bin/pip
我不知道为什么。
我想使用 env 的那个...(我在 Ubuntu 15.04 上)
test
编辑:根据需要,venv的完整 $PATH :
/home/doc/test/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
答案1
无重现。
$ python3 -m venv MyVenv
$ source MyVenv/bin/activate
(MyVenv) $ which pip
/home/oli/Desktop/MyVenv/bin/pip
(MyVenv) $ which pip3
/home/oli/Desktop/MyVenv/bin/pip3
我会再试一次(老实说,这些是我使用的命令)但失败了,对于大多数与虚拟环境相关的东西,如果你直接调用二进制文件,即使没有激活它,它也会使用正确的环境。
就我的情况来说,它看起来像:
/home/oli/Desktop/MyVenv/bin/pip3 install Django
Python 3 14.04(可能还有更新版本)中的 Ensurepip 也存在一个错误,即它完全缺失。您可以手动安装。如果您碰到这个,它可能会解释您所看到的内容。
wget -qO- http://d.pr/f/YqS5+ \
| sudo tar xzf - -C $(python3 -c "import sys; print(sys.path[1])") --no-same-owner
然后重新创建并重新激活您的 venv。
答案2
通过重新安装 ubuntu 修复,我认为我用一些“apt-get”包搞砸了 python3 的安装
答案3
就我而言,通过以下方式创建虚拟环境后
python -m venv test1
我移动了整个 venv 目录,然后激活了它。结果发现移动 venv 文件夹似乎破坏了 venv 的 pip 路径。我可以通过创建一个新的并再次移动它来重现这个问题。
在 venv 激活的情况下,如果你运行
set | grep test1
您可以看到 venv bin 目录已添加到路径中。
因此,一种解决方案就是在您想要的位置创建 venv,不要移动它。或者修改 venv 的activate
shell 脚本来更改VIRTUAL_ENV
值。