Skip to main content
Help us improve Python packaging – donate today!

Enhancements to virtualenv

Project Description

Quick Setup

  1. Add a line like export WORKON_HOME=$HOME/.virtualenvs to your .bashrc.
  2. Add a line like source /path/to/this/file/virtualenvwrapper_bashrc to your .bashrc.
  3. Run: source ~/.bashrc
  4. Run: workon
  5. A list of environments, empty, is printed.
  6. Run: mkvirtualenv temp
  7. Run: workon
  8. A new environment, temp is created and activated.
  9. This time, the temp environment is included.

Path Management

Sometimes it is desirable to share installed packages that are not in the system site-pacakges directory and which you do not want to install in each virtualenv. In this case, you could symlink the source into the environment site-packages directory, but it is also easy to add extra directories to the PYTHONPATH by including them in a .pth file inside site-packages using add2virtualenv.

  1. Check out the source for a big project, such as Django.
  2. Run: add2virtualenv path_to_source.
  3. Run: add2virtualenv.
  4. A usage message and list of current “extra” paths is printed.

Activation Scripts

virtualenvwrapper adds two separate hook scripts you can use to change your settings when moving between environments. They are sourced by workon at the appropriate trigger time, allowing them to modify your shell environment.

Both scripts are bash shell scripts and need to be saved in $VIRTUAL_ENV/bin/.

postactivate

The postactivate script is run after the new environment is enabled. $VIRTUAL_ENV refers to the new environment at the time the script runs.

This example script for the PyMOTW environment changes the current working directory and the PATH variable to refer to the source tree containing the PyMOTW source.

pymotw_root=/Users/dhellmann/Documents/PyMOTW
cd $pymotw_root
PATH=$pymotw_root/bin:$PATH

predeactivate

The predeactivate script is run before the current environment is deactivated, and can be used to disable or clear settings in your environment. $VIRTUAL_ENV refers to the old environment at the time the script runs.

Path Management

The function add2virtualenv adds the specified directories to the Python path for the active virtualenv. The directory names passed as argument are added to a path file named virtualenv_path_extensions.pth inside the virtualenv’s site-packages directory. If this file does not exist, it will be created first.

References

For more details, refer to the column I wrote for the May 2008 issue of Python Magazine: virtualenvwrapper | And Now For Something Completely Different.

Updates

1.7
  • Move to bitbucket.org for hosting
  • clean up TODO list and svn keywords
  • add license section below

1.6.1

  • More zsh support (fixes to rmvirtualenv) from Byron Clark.

1.6

  • Add completion support for zsh, courtesy of Ted Leung.

1.5

  • Fix some issues with spaces in directory or env names. They still don’t really work with virtualenv, though.
  • Added documentation for the postactivate and predeactivate scripts.

1.4

  • Includes a new .pth management function based on work contributed by James Bennett and Jannis Leidel.

1.3.x

  • Includes a fix for a nasty bug in rmvirtualenv identified by John Shimek.

License

Copyright Doug Hellmann, All Rights Reserved

Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Doug Hellmann not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission.

DOUG HELLMANN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DOUG HELLMANN BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

Release history Release notifications

History Node

4.8.2

History Node

4.8.1

History Node

4.8.0

History Node

4.7.2

History Node

4.7.1

History Node

4.7.0

History Node

4.6.0

History Node

4.5.1

History Node

4.5.0

History Node

4.4.1.post1

History Node

4.4.1

History Node

4.4.0

History Node

4.3.2

History Node

4.3.1

History Node

4.3

History Node

4.2

History Node

4.1.1

History Node

4.1

History Node

4.0

History Node

3.7.1

History Node

3.7

History Node

3.6.1

History Node

3.6

History Node

3.5

History Node

3.4

History Node

3.3

History Node

3.2

History Node

3.1

History Node

3.0.1

History Node

3.0

History Node

2.11.1

History Node

2.11

History Node

2.10.1

History Node

2.10

History Node

2.9

History Node

2.8

History Node

2.7.1

History Node

2.7

History Node

2.6.3

History Node

2.6.2

History Node

2.6.1

History Node

2.6

History Node

2.5.3

History Node

2.5.2

History Node

2.5.1

History Node

2.5

History Node

2.4

History Node

2.3

History Node

2.2.1

History Node

2.2

History Node

2.1.1

History Node

2.1

History Node

2.0.2

History Node

2.0.1

History Node

2.0

History Node

1.27

History Node

1.26

History Node

1.25

History Node

1.24.2

History Node

1.24

History Node

1.23

History Node

1.22

History Node

1.21

History Node

1.20

History Node

1.18.1

History Node

1.18

History Node

1.17.1

History Node

1.17

History Node

1.16

History Node

1.15

History Node

1.14

History Node

1.12

History Node

1.11

History Node

1.10

History Node

1.9

History Node

1.8.1

History Node

1.8

This version
History Node

1.7

History Node

1.6.1

History Node

1.6

History Node

1.5

History Node

1.4

History Node

1.3.2

History Node

1.3.1

History Node

1.3

History Node

1.2

History Node

1.1

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page