Index: bootstrap/virtualenv/docs/reference.rst |
diff --git a/bootstrap/virtualenv/docs/reference.rst b/bootstrap/virtualenv/docs/reference.rst |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ca801a007901501063c206b5e0561e21cd6f4456 |
--- /dev/null |
+++ b/bootstrap/virtualenv/docs/reference.rst |
@@ -0,0 +1,256 @@ |
+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 |