pip:找不到已激活的虚拟环境(必需)

58

我正在尝试在Mac OS X 10.8.3上安装virtualenv和/或virtualenvwrapper。

我已经与Python作斗争了两天。最终,我使用brew成功安装了Python 2.7.4。在此之前,我使用easy_install安装了virtualenv。然后我试图卸载它,试图让我的计算机处于与同事相同的状态。也许我成功卸载了它,也许没有。我不知道如何测试。现在我应该使用以下命令来安装virtualenv:

pip install virtualenv

但它给了我:

Could not find an activated virtualenv (required).

pip install virtualenvwrapper 的输出与原来完全相同。

PIP_RESPECT_VIRTUALENV 变量为空:

echo $PIP_RESPECT_VIRTUALENV

我该如何解决这个问题?

7个回答

116

打开你的~/.bashrc文件,查看是否存在以下这行代码 -

export PIP_REQUIRE_VIRTUALENV=true

可能会导致问题。如果有,将其更改为false并运行 -

source ~/.bashrc
如果没有,请从终端运行export PIP_REQUIRE_VIRTUALENV=false
注意:如果您的当前用户根目录中有.bash_profile而不是.bashrc,则所有内容都将按相同方式工作。

7
对于其他人看到这条信息,需要注意PIP_RESPECT_VIRTUALENV(原问题中提到的)和PIP_REQUIRE_VIRTUALENV之间的区别,前者并非解决方案,而是上述内容中提到的解决方法。请注意区分两者。 - yvandermeer
3
导致这个错误的问题可能还包括.bashrc文件中的其他设置,例如VIRTUALENVWRAPPER_PYTHON。在我的情况下,运行export PIP_REQUIRE_VIRTUALENV=false然后执行pip卸载/安装virtualenv可以解决问题。 - JeremyDouglass

10

@Bibhas已经说得很清楚了,要查找export PIP_REQUIRE_VIRTUALENV=true~/.profile~/.bashrc文件中。您可以使用env |grep PIP_REQUIRE_VIRTUALENV在当前的shell中确认该设置。

这个设置是一个好的安全检查;大多数情况下,你会想要把东西安装到virtualenvs中。但是有时候,你确实希望使用全局/系统python。在这些情况下,看一下--isolated

以隔离模式运行pip,忽略环境变量和用户配置。

$ pip install --upgrade pip
Could not find an activated virtualenv (required).
$ pip install --upgrade pip --isolated
Requirement already up-to-date: pip in /usr/local/lib/python2.7/site-packages
$ pip freeze --isolated
...

请参阅有关 ~/.pip/pip.conf 的其他答案。环境将覆盖 pip.conf 设置,但如果需要更改行为,则最好在源代码处进行更改。 - JGurtz

6
在已经提出的解决方案之外,另一个解决方案是添加一个 shell 命令,可以通过临时覆盖默认设置来安装 py 包。将此添加到您的 ~/.profile~/.bashrc 或您维护 shell 的输出/设置的任何地方(在我这里是 ~/.zshrc)。
syspip(){
    PIP_REQUIRE_VIRTUALENV="" pip "$@"
}

通过这个简单的补充,您可以通过 syspip install <package> 向系统安装 pip 包。

4

请确认 ~/.pip/pip.conf 文件中的内容,例如:

[global]
index=https://pypi.python.org/simple/

require-virtualenv=false

如果之前设置为require-virtualenv=true


1

你可能会在pip.conf文件中找到这个“锁”的另一个位置。在我的情况下,我在~/Library/Application Support/pip文件夹中有一个,但是忘记了它。

该文件的典型内容可能如下:

[install]
require-virtualenv = true

[uninstall]
require-virtualenv = true

与其他答案类似,文件中的false应更改为true

此文件也可以在 ~/.pip/pip.conf 找到。 - Eir Nym

1

重要的是要听从@JCotton的建议——保持pip设置,只安装到虚拟环境中是一个很好的实践。

他的解决方案是重新安装virtualenv,用pip install --upgrade pip --isolated,这正是应该做的。

您不应该关闭需要虚拟环境的设置,无论是通过配置文件还是通过编辑~/.bash_rc或~/.bash_profile,来安装项目的pip软件包。我们只在这里这样做,因为OP需要安装virtualenv本身。

一般来说,我看到人们在第一次为其项目正确设置虚拟环境时会收到此消息。请记住,要创建一个带有自己的python和pip的虚拟环境,以避免出现“找不到已激活的虚拟环境”的错误,您需要运行virtualenv -p python3


希望能提供所提到建议的规范链接。我一般认为使用virtualenv编写应用程序是个好主意。但有时候我们并不是在写一个“项目”*,比如只是一行代码或者一些小型的临时测试用例。在这些情况下,virtualenv只会让人感到烦恼和阻碍,特别是当默认情况下没有像pyyaml这样的库时。但是,也许我做错了?我一直在努力提升自己的知识水平。 - JGurtz

-1

对于matchbook,您必须进入'.bash_profile'

1)在终端中使用您喜欢的编辑器打开

nano .bash_profile或vim .bash_profile

2)找到文本行,其中写着

export PIP_REQUIRE_VIRTUALENV=true

3)删除它或将其设置为“false”

4)最后重新启动您的终端


1
这与当前接受的解决方案有何不同? - Robson
它在另一个文件中,所以我才发布了它。因为在这里的指南中我找不到它。 - Roberto Font

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接