63

I'm trying to create a virtualenv with virtualenvwrapper, but when I use mkvirtualenv I get the following :

ERROR: virtualenvwrapper could not find virtualenv in your path

I assumed it was a PYTHONPATH problem. But if I do a pip show virtualenv I get the following :

---
Metadata-Version: 2.0
Name: virtualenv
Version: 13.1.0
Summary: Virtual Python Environment builder
Home-page: https://virtualenv.pypa.io/
Author: Jannis Leidel, Carl Meyer and Brian Rosner
Author-email: [email protected]
License: MIT
Location: /Volumes/Data/nfs/zfs-student-3/users/2013_paris/vmonteco/Library/Python/2.7/lib/python/site-packages
Requires:

And here is my PYTHONPATH :

/nfs/zfs-student-3/users/2013_paris/vmonteco/Library/Python/2.7/bin:/nfs/zfs-student-3/users/2013_paris/vmonteco/Library/Python/2.7/bin:/nfs/zfs-student-3/users/2013_paris/vmonteco/Library/Python/2.7/lib/python/site-packages:/Volumes/Data/nfs/zfs-student-3/users/2013_paris/vmonteco/Library/Python/2.7/lib/python/site-packages:~/.brew/Cellar

It contains the directory containing virtualenv!

(i-e : /Volumes/Data/nfs/zfs-student-3/users/2013_paris/vmonteco/Library/Python/2.7/lib/python/site-packages )

My ~/.zshrc contains :

export WORKON_HOME=~/Envs
export PROJECT_HOME=$HOME/Devel
source $HOME"/Library/Python/2.7/bin/virtualenvwrapper.sh"

EDIT : virtualenvwrapper.sh is written in bash, perhaps should I check my PATH instead of my PYTHONPATH ?

So, what could the problem be? How could I fix it?

Thank you in advance for your help.

5
  • Show your .bashrc file
    – Ajay Gupta
    Commented Jul 7, 2015 at 16:53
  • @AjayGupta Do you mean my ~/.zshrc? There are several things in it and won't show everything, what should the parts I'll show be related to?
    – vmonteco
    Commented Jul 7, 2015 at 16:58
  • Its the .bashrc file in both mac and linux, which OS are you on?
    – Ajay Gupta
    Commented Jul 7, 2015 at 16:59
  • @AjayGupta I know but it is the .bashrc if I use bash, but I don't : I use zsh instead.
    – vmonteco
    Commented Jul 7, 2015 at 17:00
  • Please see this answer stackoverflow.com/a/61327680/8212790 Commented Apr 21, 2020 at 11:39

14 Answers 14

68

Re-installling virtualenv fixed my problem.

I had the same issue.

$ mkvirtualenv mysite
ERROR: virtualenvwrapper could not find virtualenv in your path

After a lot of time consuming efforts, I decided to re-install virtualenv.

sudo apt install virtualenv

This fixed my issues. I already had virtualenv installed. But I think it got broken or met with some errors.

5
  • 1
    For me, I had to do sudo apt install --reinstall virtualenv. Thanks for the suggestion!
    – smac89
    Commented Dec 19, 2017 at 16:12
  • 1
    sudo apt install virtualenv --upgrade fixed it for me
    – jturi
    Commented Oct 22, 2019 at 22:06
  • Neither fixed it for me. sudo apt install virtualenv --upgrade gives error ERROR: virtualenvwrapper could not find virtualenv in your path
    – Alex
    Commented Jul 19, 2022 at 14:51
  • @Alex I think --upgrade works only if the package is already installed.
    – Sudheer K
    Commented Jul 21, 2022 at 2:35
  • This did not fix my issue, it made things worse. This is not a good solution as the problem maybe deeper for others. People maybe mixing up their pip installs and apt installs which are different paths. The solution is to fix your path problems.
    – Dave
    Commented Jan 4 at 20:43
48

I am using python3 with virtualenvwrapper installed on Ubuntu 18.04, using pip3 without sudo. If you are in this situation, you might find interesting my configuration.

In the end of my .bashrc I added the following rows (remember to put your username in the YOUR_USERNAME field):

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_VIRTUALENV=/home/YOUR_USERNAME/.local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh

Then restart the cli with ctrl-D ctrl-T or reload the config with source ~/.bashrc. Then you should be good to go! Try the installation with:

lsvirtualenv
mkvirtualenv test
workon test
deactivate
rmvirtualenv test

If you could create and delete a virtual environment, you are ready to go.

4
  • 1
    This was the easiest solution for fixing this issue on Windows 10 Ubuntu subsystem, thanks! Commented Apr 20, 2019 at 19:07
  • 5
    Worked on my Windows 10 Ubuntu subsystem too. The critical part was export VIRTUALENVWRAPPER_VIRTUALENV=/home/YOUR_USERNAME/.local/bin/virtualenv. I searched for the virtualenv using Everything (a search program) and found that it exists is some long directory with /.local/bin/virtualenv at the end.
    – irene
    Commented Feb 25, 2020 at 8:00
  • export VIRTUALENVWRAPPER_VIRTUALENV was also the line that got it working for me. ElementaryOS 6, python 3.8. The virtualenvwrapper installation instructions do not include this step
    – Stetzon
    Commented Jan 28, 2022 at 18:12
  • 1
    This should be marked as the right solution.
    – LucasBr
    Commented Apr 6, 2022 at 12:24
24
  1. sudo find / -name "virtualenv"

    Then I find the executable file path is:

    /usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/bin/virtualenv

  2. Touch a soft link in the /usr/local/bin/ directory or add the path to .bash_profile, I prefer the former:

    sudo ln -s /usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/bin/virtualenv /usr/local/bin/virtualenv
    
2
  • This was the best option for me, since my pip installations in vagrant are located in an unsual place (/home/vagrant/.local/bin/virtualenv).
    – vaer-k
    Commented Dec 7, 2016 at 18:19
  • Yes, indeed. This is the best piece of advice I've got so far about virtualenvwrapper cannot find virtualenv. Thank you!
    – Chen Lizi
    Commented Sep 11, 2021 at 4:58
17

I finally found out what the problem was :

virtualenvwrapper.sh is written in BASH and not in Python. So virtualenv is called from a shell (zsh). I didn't have to bother about my PYTHONPATH, but about my PATH (I was already able to import virtualenv from my python shell anyway).

I just added the correct directory to my PATH and everything worked fine (the directory containing the virtualenv executable, i-e /Volumes/Data/nfs/zfs-student-3/users/2013_paris/vmonteco/Library/Python/2.7/lib/python/site-packages which isn't included in my PATH by default despite being the directory virtualenv and other pip-installed tools was in).

2
  • Directory of what exactly? I am sorry I am very much exhausted. My path to virtualenv and wrapper is /usr/local/bin. However I installed my Pyhtton3 with HomeBrew. I don't know if messes up my shell. Commented Apr 20, 2020 at 3:27
  • @OzkanSerttas Hello, it's a bit old but if I remember correctly, it was about adding the path of the directory containing the virtualenv executable. I edited my answer for further clarification.
    – vmonteco
    Commented Jul 1, 2021 at 16:18
9
  1. Find where is your virtualenvwrapper located. in my case
 ~/.local/bin

May be it's installed in

/usr/local/bin/

It totally depends on the System or Package Manager you are using.

  1. Add this path in your shell configuration .bashrc or .zshrc or whatever by simply
PATH=$PATH:<directory_you_want_to_add>

for example

PATH=$PATH:~/.local/bin

Also add the following configuration in .bashrc or .zshrc

# the path you want your virtual environments to be saved and loaded from
export WORKON_HOME=$HOME/.virtualenvs 
export PROJECT_HOME=$HOME/<project_folder>

# most important, this is the program which loads virtualenv
# please update the path where virtualenvwrapper.sh is located
source /usr/local/bin/virtualenvwrapper.sh 

Don't Forget to restart the shell.. or reload the configuration...

To test whether it worked

mkvirtualenv test

if you see a test environment created then everything is ok.

For Detailed Installation Instructions go to the docs: virtualenvwrapper installation

7

For me it was:

export PYTHONPATH=/usr/bin/python3
export PATH=$HOME/.local/bin:$PATH
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source ~/.local/bin/virtualenvwrapper.sh

I changed the line to:

export VIRTUALENVWRAPPER_VIRTUALENV=/usr/bin/virtualenv

It worked.

4
ERROR: virtualenvwrapper could not find virtualenv in your path

This error means - program virtualenv is not in your system path. This mostly happens if you install virtualenv via pip without sudo. This kind of installation stores data in users local directory e.g ~/.local/bin. So first step is to find where this binary present. You can do that using locate program. First update its database using sudo updatedb. Then run locate *bin/virtualenv. Whatever path you get, append it in system path variable. This you can do by adding below line in your shell config file e.g. ~/.bashrc or ~/.zshenv.

export PATH=$PATH:/your/path

e.g.

export PATH=$PATH:~/.local/bin

Now open new shell and try again. Error should be gone.

4

In my case, I tested use this command:

 sudo find / -name "virtualenv"

and I have a list with all path to this file,

I tested one to one and solved with path:

export VIRTUALENVWRAPPER_VIRTUALENV=/usr/bin/virtualenv

My configurations to environment variables is :

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export WORKON_HOME=$HOME/.virtualenv
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/bin/virtualenv
source ~/.local/bin/virtualenvwrapper.sh

in file .bashrc. Now all its works.

2

The way I did it was (using zsh) in this way:

export PATH=$HOME/bin:/usr/local/bin:$PATH:/Users/username/Library/Python/2.7/bin:$PATH

I simply located the file of virtualenvwrapper.sh inside this path /Users/username/Library/Python/2.7/bin:$PATH

and added that path to PATH.

2

I have set the variable VIRTUALENVWRAPPER_VIRTUALENV in my .zshrc to the full path of the virtualenv binary and it works for me.

Here is my .zshrc file:

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
export VIRTUALENVWRAPPER_VIRTUALENV=$HOME/Library/Python/2.7/bin/virtualenv
source $HOME/Library/Python/2.7/bin/virtualenvwrapper.sh
1

Your PYTHONPATH makes me think you have Homebrew installed. It sounds like virtualenvwrapper was installed with either your system pip or your homebrew pip while it is being executed with the opposite python interpreter.

6
  • That's right, homebrew is installed. It seems like it is installed with both, could it cause a problem? I though that the interpreter crawls my PYTHONPATH and use the first virtualenv he finds.
    – vmonteco
    Commented Jul 7, 2015 at 16:55
  • I don't use virtualenvwrapper but it seems the virtualenvwrapper.sh script that is sourced determines which python interpreter to use before exporting the wrapper functions to your current environment.
    – Josh J
    Commented Jul 7, 2015 at 16:56
  • You mean the virtualenvwrapper.sh ?
    – vmonteco
    Commented Jul 7, 2015 at 16:58
  • I did, sorry. I clarified the above comment.
    – Josh J
    Commented Jul 7, 2015 at 16:59
  • Ah, this script's purpose is to define some functions in bash, such as "workon". You have its source here : bitbucket.org/dhellmann/virtualenvwrapper/src/…
    – vmonteco
    Commented Jul 7, 2015 at 17:05
1

I had this same issues and tried many many things, what found as a solution is i had three pip version, pip with 2.7, 3.6 and 3.7. and 3.6 was the one works fine for many things, and install as sudo pip3.6 install virtualenv, and it works fine. I would suggest, check your pip version and tried to install based on your pip ver.

0

Removing all virtualenv related packages would work.

pip freeze -l | grep ^virtualenv | awk -F= '{print $1}' | xargs pip uninstall -y
0

I'm on Windows and I had the exact same problem. I had the VIRTUALENVWRAPPER_VIRTUALENV environment variable in my .bashrc pointing to virtualenv, but I kept getting an error. Apparently, I was pointing to the virtualenv/ folder, instead of the virtualenv.exe executable file (which was in another location). Once I corrected it, everything worked for me.

Not the answer you're looking for? Browse other questions tagged or ask your own question.