Python 3.4 和虚拟环境的 pip

Python 3.4 和虚拟环境的 pip

我创建了一个新的虚拟环境,但 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 的activateshell 脚本来更改VIRTUAL_ENV值。

相关内容