forked from mirrors/gecko-dev
		
	Downloaded from https://pypi.python.org/packages/source/v/virtualenv/virtualenv-14.0.1.tar.gz and extracted without any modifications. This appears to speed up `mach configure` for artifact builds by ~3.3s on my Linux machine (~16.3s to 13.0s). A significant part of this appears to be newer version of pip caching and reusing wheels after first install. This should be a rubber stamp review, as all changes are from trusted upstream packages. --HG-- extra : rebase_source : a38af27ab45f21e9ea943fcd23655b3ce51ffdd8
		
			
				
	
	
		
			261 lines
		
	
	
	
		
			7.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			261 lines
		
	
	
	
		
			7.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
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 in the new virtualenv.
 | 
						|
 | 
						|
.. option:: --no-pip
 | 
						|
 | 
						|
   Do not install pip in the new virtualenv.
 | 
						|
 | 
						|
.. option:: --no-wheel
 | 
						|
 | 
						|
   Do not install wheel 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:: --download
 | 
						|
 | 
						|
   Download preinstalled packages from PyPI.
 | 
						|
 | 
						|
.. option:: --no-download
 | 
						|
 | 
						|
   Do not download preinstalled packages from PyPI.
 | 
						|
 | 
						|
.. 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
 |