pip: Could not find an activated virtualenv (required)

PythonOsx Mountain-LionVirtualenvPip

Python Problem Overview


I am trying to instal virtualenv and/or virtualenvwrapper on a mac osx 10.8.3

I have been fighting with python for the last two days. Finally I was able to install python 2.7.4 using brew. Before I had virtualenv installed using easy_install. Then I tried to uninstall it, trying to get my computer in the same situation as the one of my colleagues. Maybe I uninstalled it with success, maybe not. I don't know how to test it. Now I am supposed to install virtualenv using -

pip install virtualenv

But it gives me -

Could not find an activated virtualenv (required).

pip install virtualenvwrapper gives exactly the same output.

Also the variable: PIP_RESPECT_VIRTUALENV is null:

echo $PIP_RESPECT_VIRTUALENV

How can I solve this issue?

Thanks

Python Solutions


Solution 1 - Python

Open your ~/.bashrc file and see if this line is there -

export PIP_REQUIRE_VIRTUALENV=true

It might be causing the trouble. If it's there, change it to false and run -

source ~/.bashrc

If not, run export PIP_REQUIRE_VIRTUALENV=false from terminal.

Note: everything works the same if you have .bash_profile instead of .bashrc in your current user's root directory.

Solution 2 - Python

@Bibhas has it; +1 to look for export PIP_REQUIRE_VIRTUALENV=true in ~/.profile or ~/.bashrc. You can confirm the setting in your current shell with env |grep PIP_REQUIRE_VIRTUALENV.

This setting is a good safety check; more often than not, you'll want to be installing things into virtualenvs. However, sometimes you do want to be working with the global/system python. In those cases, take a look at --isolated:

> Run pip in an isolated mode, ignoring environment variables and user configuration.

$ 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
...

Solution 3 - Python

An additional solution to those already presented is to add a shell command that will allow you to install py packages by temporarily overriding the default setting. Add this to your ~/.profile, ~/.bashrc or wherever you maintain your shell's exports/settings (in my case, ~/.zshrc).

syspip(){
    PIP_REQUIRE_VIRTUALENV="" pip "$@"
}

With this simple addition, you can install pip packages to the system via syspip install <package>.

Solution 4 - Python

Verify contents of ~/.pip/pip.conf like:

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

require-virtualenv=false

if previous it was set like require-virtualenv=true

Solution 5 - Python

Another place where you may possibly have this "lock" is the pip.conf file. In my case I had one in my ~/Library/Application Support/pip folder and forgot about it.

Typical content of the file could be:

[install]
require-virtualenv = true

[uninstall]
require-virtualenv = true

Similar to other answers, false should be changed to true in the file.

Solution 6 - Python

Important to heed @JCotton's advice here-- keeping your pip setup so as to only install into virtualenvs is a great practice.

His solution to get virtualenv setup again of pip install --upgrade pip --isolated is exactly what should be done.

You should NOT turn off requiring a virtualenv, either by config file or by editing ~/.bash_rc or ~/.bash_profile, to get your project's pip packages installed. We're only doing it here because OP needs virtualenv itself installed.

In general, I see people get this message when their virtualenv wasn't setup correctly for their project in the first place. Reminder that to create a virtualenv with its own python and pip so that you don't run into the "could not find an activated virtualenv" error, you run virtualenv -p python3

Solution 7 - Python

for matchbook you must go to '.bash_profile '

  1. open with your favorite editor in terminal

nano .bash_profile OR vim .bash_profile

  1. find the text line that says

export PIP_REQUIRE_VIRTUALENV=true

  1. delete it or set it equal to "false"

  2. finally restart your terminal

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPietro SperoniView Question on Stackoverflow
Solution 1 - PythonBibhas DebnathView Answer on Stackoverflow
Solution 2 - PythonJCottonView Answer on Stackoverflow
Solution 3 - PythonPerryAJView Answer on Stackoverflow
Solution 4 - PythonN N K TejaView Answer on Stackoverflow
Solution 5 - PythonVitaliiView Answer on Stackoverflow
Solution 6 - PythonMicahView Answer on Stackoverflow
Solution 7 - PythonRoberto FontView Answer on Stackoverflow