| Reference Guide |
| =============== |
| |
| ``virtualenv`` Command |
| ---------------------- |
| |
| .. _usage: |
| |
| Usage |
| ~~~~~ |
| |
| :command:`virtualenv [OPTIONS] ENV_DIR` |
| |
| Where ``ENV_DIR`` is an absolute or relative path to a directory to create |
| the virtual environment in. |
| |
| .. _options: |
| |
| Options |
| ~~~~~~~ |
| |
| .. program: virtualenv |
| |
| .. option:: --version |
| |
| show program's version number and exit |
| |
| .. option:: -h, --help |
| |
| show this help message and exit |
| |
| .. option:: -v, --verbose |
| |
| Increase verbosity. |
| |
| .. option:: -q, --quiet |
| |
| Decrease verbosity. |
| |
| .. option:: -p PYTHON_EXE, --python=PYTHON_EXE |
| |
| The Python interpreter to use, e.g., |
| --python=python2.5 will use the python2.5 interpreter |
| to create the new environment. The default is the |
| interpreter that virtualenv was installed with |
| (like ``/usr/bin/python``) |
| |
| .. option:: --clear |
| |
| Clear out the non-root install and start from scratch. |
| |
| .. option:: --system-site-packages |
| |
| Give the virtual environment access to the global |
| site-packages. |
| |
| .. option:: --always-copy |
| |
| Always copy files rather than symlinking. |
| |
| .. option:: --relocatable |
| |
| Make an EXISTING virtualenv environment relocatable. |
| This fixes up scripts and makes all .pth files relative. |
| |
| .. option:: --unzip-setuptools |
| |
| Unzip Setuptools when installing it. |
| |
| .. option:: --no-setuptools |
| |
| Do not install setuptools (or pip) in the new |
| virtualenv. |
| |
| .. option:: --no-pip |
| |
| Do not install pip in the new virtualenv. |
| |
| .. option:: --extra-search-dir=DIR |
| |
| Directory to look for setuptools/pip distributions in. |
| This option can be specified multiple times. |
| |
| .. option:: --prompt=PROMPT |
| |
| Provides an alternative prompt prefix for this |
| environment. |
| |
| .. option:: --never-download |
| |
| DEPRECATED. Retained only for backward compatibility. |
| This option has no effect. Virtualenv never downloads |
| pip or setuptools. |
| |
| .. option:: --no-site-packages |
| |
| DEPRECATED. Retained only for backward compatibility. |
| Not having access to global site-packages is now the |
| default behavior. |
| |
| .. option:: --distribute |
| .. option:: --setuptools |
| |
| Legacy; now have no effect. Before version 1.10 these could be used |
| to choose whether to install Distribute_ or Setuptools_ into the created |
| virtualenv. Distribute has now been merged into Setuptools, and the |
| latter is always installed. |
| |
| .. _Distribute: https://pypi.python.org/pypi/distribute |
| .. _Setuptools: https://pypi.python.org/pypi/setuptools |
| |
| |
| Configuration |
| ------------- |
| |
| Environment Variables |
| ~~~~~~~~~~~~~~~~~~~~~ |
| |
| Each command line option is automatically used to look for environment |
| variables with the name format ``VIRTUALENV_<UPPER_NAME>``. That means |
| the name of the command line options are capitalized and have dashes |
| (``'-'``) replaced with underscores (``'_'``). |
| |
| For example, to automatically use a custom Python binary instead of the |
| one virtualenv is run with you can also set an environment variable:: |
| |
| $ export VIRTUALENV_PYTHON=/opt/python-3.3/bin/python |
| $ virtualenv ENV |
| |
| It's the same as passing the option to virtualenv directly:: |
| |
| $ virtualenv --python=/opt/python-3.3/bin/python ENV |
| |
| This also works for appending command line options, like ``--find-links``. |
| Just leave an empty space between the passed values, e.g.:: |
| |
| $ export VIRTUALENV_EXTRA_SEARCH_DIR="/path/to/dists /path/to/other/dists" |
| $ virtualenv ENV |
| |
| is the same as calling:: |
| |
| $ virtualenv --extra-search-dir=/path/to/dists --extra-search-dir=/path/to/other/dists ENV |
| |
| .. envvar:: VIRTUAL_ENV_DISABLE_PROMPT |
| |
| Any virtualenv created when this is set to a non-empty value will not have |
| it's :ref:`activate` modify the shell prompt. |
| |
| |
| Configuration File |
| ~~~~~~~~~~~~~~~~~~ |
| |
| virtualenv also looks for a standard ini config file. On Unix and Mac OS X |
| that's ``$HOME/.virtualenv/virtualenv.ini`` and on Windows, it's |
| ``%APPDATA%\virtualenv\virtualenv.ini``. |
| |
| The names of the settings are derived from the long command line option, |
| e.g. the option :option:`--python <-p>` would look like this:: |
| |
| [virtualenv] |
| python = /opt/python-3.3/bin/python |
| |
| Appending options like :option:`--extra-search-dir` can be written on multiple |
| lines:: |
| |
| [virtualenv] |
| extra-search-dir = |
| /path/to/dists |
| /path/to/other/dists |
| |
| Please have a look at the output of :option:`--help <-h>` for a full list |
| of supported options. |
| |
| |
| Extending Virtualenv |
| -------------------- |
| |
| |
| Creating Your Own Bootstrap Scripts |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| While this creates an environment, it doesn't put anything into the |
| environment. Developers may find it useful to distribute a script |
| that sets up a particular environment, for example a script that |
| installs a particular web application. |
| |
| To create a script like this, call |
| :py:func:`virtualenv.create_bootstrap_script`, and write the |
| result to your new bootstrapping script. |
| |
| .. py:function:: create_bootstrap_script(extra_text) |
| |
| Creates a bootstrap script from ``extra_text``, which is like |
| this script but with extend_parser, adjust_options, and after_install hooks. |
| |
| This returns a string that (written to disk of course) can be used |
| as a bootstrap script with your own customizations. The script |
| will be the standard virtualenv.py script, with your extra text |
| added (your extra text should be Python code). |
| |
| If you include these functions, they will be called: |
| |
| .. py:function:: extend_parser(optparse_parser) |
| |
| You can add or remove options from the parser here. |
| |
| .. py:function:: adjust_options(options, args) |
| |
| You can change options here, or change the args (if you accept |
| different kinds of arguments, be sure you modify ``args`` so it is |
| only ``[DEST_DIR]``). |
| |
| .. py:function:: after_install(options, home_dir) |
| |
| After everything is installed, this function is called. This |
| is probably the function you are most likely to use. An |
| example would be:: |
| |
| def after_install(options, home_dir): |
| if sys.platform == 'win32': |
| bin = 'Scripts' |
| else: |
| bin = 'bin' |
| subprocess.call([join(home_dir, bin, 'easy_install'), |
| 'MyPackage']) |
| subprocess.call([join(home_dir, bin, 'my-package-script'), |
| 'setup', home_dir]) |
| |
| This example immediately installs a package, and runs a setup |
| script from that package. |
| |
| Bootstrap Example |
| ~~~~~~~~~~~~~~~~~ |
| |
| Here's a more concrete example of how you could use this:: |
| |
| import virtualenv, textwrap |
| output = virtualenv.create_bootstrap_script(textwrap.dedent(""" |
| import os, subprocess |
| def after_install(options, home_dir): |
| etc = join(home_dir, 'etc') |
| if not os.path.exists(etc): |
| os.makedirs(etc) |
| subprocess.call([join(home_dir, 'bin', 'easy_install'), |
| 'BlogApplication']) |
| subprocess.call([join(home_dir, 'bin', 'paster'), |
| 'make-config', 'BlogApplication', |
| join(etc, 'blog.ini')]) |
| subprocess.call([join(home_dir, 'bin', 'paster'), |
| 'setup-app', join(etc, 'blog.ini')]) |
| """)) |
| f = open('blog-bootstrap.py', 'w').write(output) |
| |
| Another example is available `here`__. |
| |
| .. __: https://github.com/socialplanning/fassembler/blob/master/fassembler/create-venv-script.py |