Installation
# easy_install virtualenv virtualenvwrapper
Virtualenvwrapper
Virtualenvwrapper is a set of shell scripts that offers command line tools for managing and using virtualenvs.
Install it by adding:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/bin/virtualenvwrapper.sh
to ~/.bash_profile. Create the $WORKON_HOME directory:
mkdir $HOME/.virtualenvs
Mac OS X
On OS X, you'll need XCode installed to use mkvirtualenv.
Yolk
Ensure that yolk is not installed system-wide. A central yolk will show the pacakge list for the sytem, not for the active virtualenv.
Using a virtualenv
Virtualenvs are defined by a restricted PYTHONPATH and a dedicated bin directory for scripts that run within the virtualenv.
A virtualenv can be used:
- Through virtualenv wrapper, via the shell after using
workon - By calling a python script using the
pythonbinary within the virtualenv's bin directory. Calling any python scripts installed by easy_install in that bin directory will automatically use this specialpython. - By setting the
PYTHONPATHmanually
With virtualenvwrapper
It's easiest to manage virtualenvs via virtualenv wrapper:
Virtualenvs are most useful if they do not include any packages installed globally on the system. This is accomplished by creating a new virtualenv with:
$ mkvirtualenv --no-site-packages mynewvirtualenv
This will activate the new virtualenv. To leave the virtualenv, deactivate it:
$ deactivate
To work on it again:
$ workon mynewvirtualenv
It's almost always useful to have yolk in each virtualenv:
$ easy_install yolk
Via the special python binaries
It's easiest to launch virtualenv-restricted Python daemons from scripts using the special python found in each virtualenv's bin directory:
$ /home/app/.virtualenvs/myve/bin/python foo.py
If your daemon is available as an executable Python script installed on the PATH, it will be available in the virtualenv's bin directory. Calling it directly will use the virtualenv's PYTHONPATH:
$ /home/app/.virtualenvs/myve/bin/foo
Creating virtualenvs without virtualenvwrapper
It's also possible to create virtualenvs with the bare virtualenv command. It takes the same --no-site-packages option as mkvirtualenv, but the argument passed to it is not the name of the new virtualenv within the virtualenv directory but insted a path where the new virtualenv should be installed. This allows for easy scripting of virtualevn creation.
$ virtualenv --no-site-packages /var/virtualenvs/myvirtualenv
Or, in a Makefile:
create-virtualenv:
virtualenv --no-site-packages $(VIRTUALENV_PATH)/$(PROJECT_NAME)