I am running python 3.7.6 on macOS Catalina version 10.15.1 and I am trying to install and set up virtualenvwrapper
which I have installed with pip3 install virtualenvwrapper
.
I have the following lines in my .bash_profile:
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/Users/maxcarey/Library/Python/3.7/bin/virtualenv
export WORKON_HOME=$HOME/.virtualenvs
source /Users/maxcarey/Library/Python/3.7/bin/virtualenvwrapper.sh
These are configuration steps I have followed from: https://stackoverflow.com/a/42643313/5420796. As well as other tutorials (like this one)
So you can see I'm attemping to point these export variables to the right place, in my terminal, the output of which python3
is /usr/local/bin/python3
The output of which virtualenv
is: /Users/maxcarey/Library/Python/3.7/bin/virtualenv.
The output of which virtualenvwrapper.sh
is /Users/maxcarey/Library/Python/3.7/bin/virtualenvwrapper.sh
Here is the problem: when I run: mkvirtualenv iron
to create a new virtual environment (called iron in this case), the output of the command is:
created virtual environment in 193ms CPython3Posix(dest=/Users/maxcarey/.virtualenvs/iron, clear=False, global=False) with seeder FromAppData pip=latest setuptools=latest wheel=latest app_data_dir=/Users/maxcarey/Library/Application Support/virtualenv/seed-v1 via=copy virtualenvwrapper.user_scripts creating /Users/maxcarey/.virtualenvs/iron/bin/predeactivate ERROR: Environment '/Users/maxcarey/.virtualenvs/iron' does not contain an activate script.
You can see that a virtual environment is indeed created, however, I get an error saying there is no activation script. However, when I navigate to ~/.virtualenvs
, I can indeed see the activation scripts. Here is the output of tree
inside the new folder iron/local/
:
└── local
└── bin
├── activate
├── activate.csh
├── activate.fish
├── activate.ps1
├── activate.xsh
├── activate_this.py
├── easy_install
├── easy_install-3.7
├── easy_install3
├── pip
├── pip-3.7
├── pip3
├── python -> /Library/Developer/CommandLineTools/usr/bin/python3
├── python3 -> python
├── python3.7 -> python
├── wheel
├── wheel-3.7
└── wheel3
It does indeed appear that there are activation scripts. So I am stumped about why I get the activation script error (which I also get when running workon iron
). I have tried simply destroying and recreating the virtual environment with rmvirtualenv iron
, which works, however, when creating the environment again I still get the same error. Thank You
I'm running on a raspbian buster with Python 3.7.3. I ran into the same issue, "ERROR...no activation script". I tried @Lombax answer but it didn't work.
However, I noticed that the version of virtualenvwrapper
I had installed was 5.0.0. I checked on PyPi and it's still at version 4.8.4. So I uninstalled virtualenv and virtualenvwrapper: sudo pip3 uninstall virtualenv virtualenvwrapper
.
Then I reinstalled both and specified the version: sudo pip3 install virtualenv virtualenvwrapper=='4.8.4'
I sourced my .bashrc, in which I had appended the settings:
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
export PATH=/usr/local/bin:$PATH
export WORKON_HOME=~/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
And now mkvirtualenv test
works. Not sure what's the bug with version 5.x of virtualenvwrapper, in the meantime, this got around the problem for me, hope this helps.
I had the same error message when I used mkvirtualenv
on a new RPI4. I added these lines to my .bashrc
and it fixed the problem for me:
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
export VIRTUALENVWRAPPER_ENV_BIN_DIR=bin # <== This line fixed it for me
This is a variation of the answer from @maxmcmahon, above, but setting VIRTUALENVWRAPPER_ENV_BIN_DIR to "bin". I did not need to change the versions of either virtualenv or virtualenvwrapper; the current versions installed by default were fine.
My solution was to add export VIRTUALENVWRAPPER_ENV_BIN_DIR=usr/local/bin
to my shell startup file after the virtualenvwrapper.sh
script gets called.
I figured out this fix after looking at the source and seeing that it was creating the activate
script in usr/local/bin
, but the virtualenvwrapper.sh
script was looking in just bin
for some reason.
My full shell startup config is now this:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
export VIRTUALENVWRAPPER_ENV_BIN_DIR=usr/local/bin
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With