Changes & News


Python bugfix releases 2.6.8, 2.7.3, 3.1.5 and 3.2.3 include a change that will cause “import random” to fail with “cannot import name urandom” on any virtualenv created on a Unix host with an earlier release of Python 2.6/2.7/3.1/3.2, if the underlying system Python is upgraded. This is due to the fact that a virtualenv uses the system Python’s standard library but contains its own copy of the Python interpreter, so an upgrade to the system Python results in a mismatch between the version of the Python interpreter and the version of the standard library. It can be fixed by removing $ENV/bin/python and re-running virtualenv on the same target directory with the upgraded Python.

master (unreleased)

  • Fix on OS X. Fixes #8. Thanks David Schoonover.
  • Create a virtualenv-x.x script with the Python version when installing, so virtualenv for multiple Python versions can be installed to the same script location. Thanks Miki Tebeka.
  • Restored ability to create a virtualenv with a path longer than 78 characters, without breaking creation of virtualenvs with non-ASCII paths. Thanks, Bradley Ayers. (2012-02-17)

  • Fixed minor issue in –relocatable. Thanks, Cap Petschulat. (2012-02-16)

  • Bumped the version string in up, too.
  • Fixed rST rendering bug of long description.

1.7.1 (2012-02-16)

  • Update embedded pip to version 1.1.
  • Fix –relocatable under Python 3. Thanks Doug Hellmann.
  • Added environ PATH modification to Thanks Doug Napoleone. Fixes #14.
  • Support creating virtualenvs directly from a Python build directory on Windows. Thanks CBWhiz. Fixes #139.
  • Use non-recursive symlinks to fix things up for posix_local install scheme. Thanks michr.
  • Made activate script available for use with msys and cygwin on Windows. Thanks Greg Haskins, Cliff Xuan, Jonathan Griffin and Doug Napoleone. Fixes #176.
  • Fixed creation of virtualenvs on Windows when Python is not installed for all users. Thanks Anatoly Techtonik for report and patch and Doug Napoleone for testing and confirmation. Fixes #87.
  • Fixed creation of virtualenvs using -p in installs where some modules that ought to be in the standard library (e.g. readline) are actually installed in site-packages next to Thanks Greg Haskins for report and fix. Fixes #167.
  • Added activation script for Powershell (signed by Jannis Leidel). Many thanks to Jason R. Coombs.

1.7 (2011-11-30)

  • Gave user-provided --extra-search-dir priority over default dirs for finding setuptools/distribute (it already had priority for finding pip). Thanks Ethan Jucovy.
  • Updated embedded Distribute release to 0.6.24. Thanks Alex Gronholm.
  • Made --no-site-packages behavior the default behavior. The --no-site-packages flag is still permitted, but displays a warning when used. Thanks Chris McDonough.
  • New flag: --system-site-packages; this flag should be passed to get the previous default global-site-package-including behavior back.
  • Added ability to set command options as environment variables and options in a virtualenv.ini file.
  • Fixed various encoding related issues with paths. Thanks Gunnlaugur Thor Briem.
  • Made script executable.

1.6.4 (2011-07-21)

  • Restored ability to run on Python 2.4, too.

1.6.3 (2011-07-16)

  • Restored ability to run on Python < 2.7.

1.6.2 (2011-07-16)

  • Updated embedded distribute release to 0.6.19.
  • Updated embedded pip release to 1.0.2.
  • Fixed #141 - Be smarter about finding pkg_resources when using the non-default Python intepreter (by using the -p option).
  • Fixed #112 - Fixed path in docs.
  • Fixed #109 - Corrected doctests of a Logger method.
  • Fixed #118 - Fixed creating virtualenvs on platforms that use the “posix_local” install scheme, such as Ubuntu with Python 2.7.
  • Add missing library to Python 3 virtualenvs (_dummy_thread).

1.6.1 (2011-04-30)

  • Start to use git-flow.
  • Added support for PyPy 1.5
  • Fixed #121 – added sanity-checking of the -p argument. Thanks Paul Nasrat.
  • Added progress meter for pip installation as well as setuptools. Thanks Ethan Jucovy.
  • Added –never-download and –search-dir options. Thanks Ethan Jucovy.


  • Added Python 3 support! Huge thanks to Vinay Sajip and Vitaly Babiy.
  • Fixed creation of virtualenvs on Mac OS X when standard library modules (readline) are installed outside the standard library.
  • Updated bundled pip to 1.0.



  • Added _weakrefset requirement for Python 2.7.1.
  • Fixed Windows regression in 1.5


  • Include pip 0.8.1.
  • Add support for PyPy.
  • Uses a proper temporary dir when installing environment requirements.
  • Add --prompt option to be able to override the default prompt prefix.
  • Fix an issue with --relocatable on Windows.
  • Fix issue with installing the wrong version of distribute.
  • Add fish and csh activate scripts.


  • Include pip 0.7.2


  • Fix for Mac OS X Framework builds that use --universal-archs=intel
  • Fix on Windows.
  • Allow $PYTHONHOME to be set, so long as you use source bin/activate it will get unset; if you leave it set and do not activate the environment it will still break the environment.
  • Include pip 0.7.1


  • Include pip 0.7


  • Allow to skip updating the prompt (by setting $VIRTUAL_ENV_DISABLE_PROMPT).


  • Include pip 0.6.3
  • Fix activate.bat and deactivate.bat under Windows when PATH contained a parenthesis


  • Include pip 0.6.2 and Distribute 0.6.10
  • Create the virtualenv script even when Setuptools isn’t installed
  • Fix problem with virtualenv --relocate when bin/ has subdirectories (e.g., bin/.svn/); from Alan Franzoni.
  • If you set $VIRTUALENV_USE_DISTRIBUTE then virtualenv will use Distribute by default (so you don’t have to remember to use --distribute).


  • Include pip 0.6.1


  • Fix pip installation on Windows
  • Fix use of stand-alone (and boot scripts)
  • Exclude ~/.local (user site-packages) from environments when using --no-site-packages


  • Include pip 0.6


  • Updated setuptools to 0.6c11
  • Added the –distribute option
  • Fixed packaging problem of support-files


  • Virtualenv now copies the actual embedded Python binary on Mac OS X to fix a hang on Snow Leopard (10.6).
  • Fail more gracefully on Windows when win32api is not installed.
  • Fix site-packages taking precedent over Jython’s __classpath__ and also specially handle the new __pyclasspath__ entry in sys.path.
  • Now copies Jython’s registry file to the virtualenv if it exists.
  • Better find libraries when compiling extensions on Windows.
  • Create Scripts\pythonw.exe on Windows.
  • Added support for the Debian/Ubuntu /usr/lib/pythonX.Y/dist-packages directory.
  • Set distutils.sysconfig.get_config_vars()['LIBDIR'] (based on sys.real_prefix) which is reported to help building on Windows.
  • Make deactivate work on ksh
  • Fixes for --python: make it work with --relocatable and the symlink created to the exact Python version.


  • Use Windows newlines in activate.bat, which has been reported to help when using non-ASCII directory names.
  • Fixed compatibility with Jython 2.5b1.
  • Added a function virtualenv.install_python for more fine-grained access to what virtualenv.create_environment does.
  • Fix a problem with Windows and paths that contain spaces.
  • If /path/to/env/.pydistutils.cfg exists (or /path/to/env/pydistutils.cfg on Windows systems) then ignore ~/.pydistutils.cfg and use that other file instead.
  • Fix ` a problem <>`_ picking up some .so libraries in /usr/local.


  • Remove the [install] prefix = ... setting from the virtualenv distutils.cfg – this has been causing problems for a lot of people, in rather obscure ways.
  • If you use a boot script it will attempt to import virtualenv and find a pre-downloaded Setuptools egg using that.
  • Added platform-specific paths, like /usr/lib/pythonX.Y/plat-linux2


  • Real Python 2.6 compatibility. Backported the Python 2.6 updates to, including user directories (this means older versions of Python will support user directories, whether intended or not).
  • Always set [install] prefix in distutils.cfg – previously on some platforms where a system-wide distutils.cfg was present with a prefix setting, packages would be installed globally (usually in /usr/local/lib/pythonX.Y/site-packages).
  • Sometimes Cygwin seems to leave .exe off sys.executable; a workaround is added.
  • Fix --python option.
  • Fixed handling of Jython environments that use a jython-complete.jar.


  • Update to Setuptools 0.6c9
  • Added an option virtualenv --relocatable EXISTING_ENV, which will make an existing environment “relocatable” – the paths will not be absolute in scripts, .egg-info and .pth files. This may assist in building environments that can be moved and copied. You have to run this after any new packages installed.
  • Added bin/, a file you can use like execfile("path_to/", dict(__file__="path_to/")) – this will activate the environment in place, similar to what the mod_wsgi example does.
  • For Mac framework builds of Python, the site-packages directory /Library/Python/X.Y/site-packages is added to sys.path, from Andrea Rech.
  • Some platform-specific modules in Macs are added to the path now (plat-darwin/, plat-mac/, plat-mac/lib-scriptpackages), from Andrea Rech.
  • Fixed a small Bashism in the bin/activate shell script.
  • Added __future__ to the list of required modules, for Python 2.3. You’ll still need to backport your own subprocess module.
  • Fixed the __classpath__ entry in Jython’s sys.path taking precedent over virtualenv’s libs.


  • Added a --python option to select the Python interpreter.
  • Add warnings to the modules copied over, for Python 2.6 support.
  • Add sets to the module copied over for Python 2.3 (though Python 2.3 still probably doesn’t work).


  • Added support for Jython 2.5.


  • Added support for Python 2.6.
  • Fix a problem with missing DLLs/zlib.pyd on Windows. Create
  • bin/python (or bin/python.exe) even when you run virtualenv with an interpreter named, e.g., python2.4
  • Fix MacPorts Python
  • Added –unzip-setuptools option
  • Update to Setuptools 0.6c8
  • If the current directory is not writable, run in /tmp
  • Copy or symlink over the include directory so that packages will more consistently compile.


  • Fix build on systems that use /usr/lib64, distinct from /usr/lib (specifically CentOS x64).
  • Fixed bug in --clear.
  • Fixed typos in deactivate.bat.
  • Preserve $PYTHONPATH when calling subprocesses.


  • Fix include dir copying on Windows (makes compiling possible).
  • Include the main lib-tk in the path.
  • Patch distutils.sysconfig: get_python_inc and get_python_lib to point to the global locations.
  • Install distutils.cfg before Setuptools, so that system customizations of distutils.cfg won’t effect the installation.
  • Add bin/pythonX.Y to the virtualenv (in addition to bin/python).
  • Fixed an issue with Mac Framework Python builds, and absolute paths (from Ronald Oussoren).


  • Improve ability to create a virtualenv from inside a virtualenv.
  • Fix a little bug in bin/activate.
  • Actually get distutils.cfg to work reliably.


  • Added lib-dynload and config to things that need to be copied over in an environment.
  • Copy over or symlink the include directory, so that you can build packages that need the C headers.
  • Include a distutils package, so you can locally update distutils.cfg (in lib/pythonX.Y/distutils/distutils.cfg).
  • Better avoid downloading Setuptools, and hitting PyPI on environment creation.
  • Fix a problem creating a lib64/ directory.
  • Should work on MacOSX Framework builds (the default Python installations on Mac). Thanks to Ronald Oussoren.


  • Windows installs would sometimes give errors about sys.prefix that were inaccurate.
  • Slightly prettier output.


  • Added support for Windows.


  • Give a better warning if you are on an unsupported platform (Mac Framework Pythons, and Windows).
  • Give error about running while inside a workingenv.
  • Give better error message about Python 2.3.


Fixed packaging of the library.


Initial release. Everything is changed and new!