25

On a fresh install of 16.04, I am trying to install virtualenvwrapper by following this great answer by Gerhard Burger.

after configuring the .bashrc, whenever opening the terminal displays

bash: /usr/local/bin/python2.7: No such file or directory
virtualenvwrapper.sh: There was a problem running the initialization hooks. 

If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7 and that PATH is
set properly.

the script location is,

$ sudo find / -name virtualenvwrapper.sh
[sudo] password for john: 
/usr/local/bin/virtualenvwrapper.sh

contents of my .bashrc are,

export WORKON_HOME=/home/john/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
export PIP_VIRTUALENV_BASE=/home/john/.virtualenvs

here is my pip freeze

cffi==1.5.2
greenlet==0.4.9
pbr==1.10.0
readline==6.2.4.1
six==1.10.0
stevedore==1.15.0
virtualenv==15.0.2
virtualenv-clone==0.2.6
virtualenvwrapper==4.7.1

the python interpreter's location,

$ which python
/usr/bin/python

How do I make it work?

thank you.

5 Answers5

37

I am using Ubuntu server 16.04, You should also export the python interpreter in which you've installed the the virtualenvwrapper

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export WORKON_HOME=~/.virtualenvs
source /home/vagrant/.local/bin/virtualenvwrapper.sh

Make sure to replace all the paths above according to your own system. Your wrapper script might e.g. be located in /usr/local/bin/virtualenvwrapper.sh instead, or you might use a different interpreter or virtualenvs home, ...

Byte Commander
  • 110,243
3

In the .bashrc change

VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

and then make it work in the current shell by

source /usr/local/bin/virtualenvwrapper.sh 

Afterwards, change in the virtualenvwrapper.sh

VIRTUALENVWRAPPER_PYTHON="$(command \which python)"

to this

VIRTUALENVWRAPPER_PYTHON="$(command \which python3)"
zx485
  • 2,865
2

just comment

source /usr/local/bin/virtualenvwrapper.sh

line in

~/.bashrc

file....it worked for me.

1

You probably need to update your PYTHONPATH environment variable. In your .bashrc, before all the virtualenvwrapper variables, add the following line:

export PYTHONPATH=${PYTHONPATH}:/usr/bin
αғsнιη
  • 36,350
michael
  • 254
0

Firstly Cross-verify PATH in .bashrc with following commands:

which virtualenv

which virtualenvwrapper.sh

output of:

echo $VIRTUALENVWRAPPER_PYTHON

and

which python3

should be same which is

/usr/bin/python3

Configure the path accordingly to above results

export WORKON_HOME=~/.virtualenvs

export MY_PROJECT=~/my_proj

export VIRTUALENVWRAPPER_WORKON_CD=1

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

export VIRTUALENVWRAPPER_VIRTUALENV='result of which virtualenv'

source 'result of which virtualenvwrapper.sh'

if after verifying path still INITIALIZATION HOOK ERROR REMAINS.

Then, In source left everthing as it is just replace virtualenvwrapper.sh with virtualenvwrapper_lazy.sh

Then it should work