Index: bootstrap/virtualenv/docs/userguide.rst |
diff --git a/bootstrap/virtualenv/docs/userguide.rst b/bootstrap/virtualenv/docs/userguide.rst |
new file mode 100644 |
index 0000000000000000000000000000000000000000..70d4af85df0a64feb1b975240c8077b82bdd30dd |
--- /dev/null |
+++ b/bootstrap/virtualenv/docs/userguide.rst |
@@ -0,0 +1,249 @@ |
+User Guide |
+========== |
+ |
+ |
+Usage |
+----- |
+ |
+Virtualenv has one basic command:: |
+ |
+ $ virtualenv ENV |
+ |
+Where ``ENV`` is a directory to place the new virtual environment. It has |
+a number of usual effects (modifiable by many :ref:`options`): |
+ |
+ - :file:`ENV/lib/` and :file:`ENV/include/` are created, containing supporting |
+ library files for a new virtualenv python. Packages installed in this |
+ environment will live under :file:`ENV/lib/pythonX.X/site-packages/`. |
+ |
+ - :file:`ENV/bin` is created, where executables live - noticeably a new |
+ :command:`python`. Thus running a script with ``#! /path/to/ENV/bin/python`` |
+ would run that script under this virtualenv's python. |
+ |
+ - The crucial packages pip_ and setuptools_ are installed, which allow other |
+ packages to be easily installed to the environment. This associated pip |
+ can be run from :file:`ENV/bin/pip`. |
+ |
+The python in your new virtualenv is effectively isolated from the python that |
+was used to create it. |
+ |
+.. _pip: https://pypi.python.org/pypi/pip |
+.. _setuptools: https://pypi.python.org/pypi/setuptools |
+ |
+ |
+.. _activate: |
+ |
+activate script |
+~~~~~~~~~~~~~~~ |
+ |
+In a newly created virtualenv there will also be a :command:`activate` shell |
+script. For Windows systems, activation scripts are provided for |
+the Command Prompt and Powershell. |
+ |
+On Posix systems, this resides in :file:`/ENV/bin/`, so you can run:: |
+ |
+ $ source bin/activate |
+ |
+For some shells (e.g. the original Bourne Shell) you may need to use the |
+:command:`.` command, when :command:`source` does not exist. |
+ |
+This will change your ``$PATH`` so its first entry is the virtualenv's |
+``bin/`` directory. (You have to use ``source`` because it changes your |
+shell environment in-place.) This is all it does; it's purely a |
+convenience. If you directly run a script or the python interpreter |
+from the virtualenv's ``bin/`` directory (e.g. ``path/to/ENV/bin/pip`` |
+or ``/path/to/ENV/bin/python-script.py``) there's no need for |
+activation. |
+ |
+The ``activate`` script will also modify your shell prompt to indicate |
+which environment is currently active. To disable this behaviour, see |
+:envvar:`VIRTUAL_ENV_DISABLE_PROMPT`. |
+ |
+To undo these changes to your path (and prompt), just run:: |
+ |
+ $ deactivate |
+ |
+On Windows, the equivalent `activate` script is in the ``Scripts`` folder:: |
+ |
+ > \path\to\env\Scripts\activate |
+ |
+And type ``deactivate`` to undo the changes. |
+ |
+Based on your active shell (CMD.exe or Powershell.exe), Windows will use |
+either activate.bat or activate.ps1 (as appropriate) to activate the |
+virtual environment. If using Powershell, see the notes about code signing |
+below. |
+ |
+.. note:: |
+ |
+ If using Powershell, the ``activate`` script is subject to the |
+ `execution policies`_ on the system. By default on Windows 7, the system's |
+ excution policy is set to ``Restricted``, meaning no scripts like the |
+ ``activate`` script are allowed to be executed. But that can't stop us |
+ from changing that slightly to allow it to be executed. |
+ |
+ In order to use the script, you can relax your system's execution |
+ policy to ``AllSigned``, meaning all scripts on the system must be |
+ digitally signed to be executed. Since the virtualenv activation |
+ script is signed by one of the authors (Jannis Leidel) this level of |
+ the execution policy suffices. As an administrator run:: |
+ |
+ PS C:\> Set-ExecutionPolicy AllSigned |
+ |
+ Then you'll be asked to trust the signer, when executing the script. |
+ You will be prompted with the following:: |
+ |
+ PS C:\> virtualenv .\foo |
+ New python executable in C:\foo\Scripts\python.exe |
+ Installing setuptools................done. |
+ Installing pip...................done. |
+ PS C:\> .\foo\scripts\activate |
+ |
+ Do you want to run software from this untrusted publisher? |
+ File C:\foo\scripts\activate.ps1 is published by E=jannis@leidel.info, |
+ CN=Jannis Leidel, L=Berlin, S=Berlin, C=DE, Description=581796-Gh7xfJxkxQSIO4E0 |
+ and is not trusted on your system. Only run scripts from trusted publishers. |
+ [V] Never run [D] Do not run [R] Run once [A] Always run [?] Help |
+ (default is "D"):A |
+ (foo) PS C:\> |
+ |
+ If you select ``[A] Always Run``, the certificate will be added to the |
+ Trusted Publishers of your user account, and will be trusted in this |
+ user's context henceforth. If you select ``[R] Run Once``, the script will |
+ be run, but you will be prometed on a subsequent invocation. Advanced users |
+ can add the signer's certificate to the Trusted Publishers of the Computer |
+ account to apply to all users (though this technique is out of scope of this |
+ document). |
+ |
+ Alternatively, you may relax the system execution policy to allow running |
+ of local scripts without verifying the code signature using the following:: |
+ |
+ PS C:\> Set-ExecutionPolicy RemoteSigned |
+ |
+ Since the ``activate.ps1`` script is generated locally for each virtualenv, |
+ it is not considered a remote script and can then be executed. |
+ |
+.. _`execution policies`: http://technet.microsoft.com/en-us/library/dd347641.aspx |
+ |
+The :option:`--system-site-packages` Option |
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
+ |
+If you build with ``virtualenv --system-site-packages ENV``, your virtual |
+environment will inherit packages from ``/usr/lib/python2.7/site-packages`` |
+(or wherever your global site-packages directory is). |
+ |
+This can be used if you have control over the global site-packages directory, |
+and you want to depend on the packages there. If you want isolation from the |
+global system, do not use this flag. |
+ |
+Windows Notes |
+~~~~~~~~~~~~~ |
+ |
+Some paths within the virtualenv are slightly different on Windows: scripts and |
+executables on Windows go in ``ENV\Scripts\`` instead of ``ENV/bin/`` and |
+libraries go in ``ENV\Lib\`` rather than ``ENV/lib/``. |
+ |
+To create a virtualenv under a path with spaces in it on Windows, you'll need |
+the `win32api <http://sourceforge.net/projects/pywin32/>`_ library installed. |
+ |
+ |
+Using Virtualenv without ``bin/python`` |
+--------------------------------------- |
+ |
+Sometimes you can't or don't want to use the Python interpreter |
+created by the virtualenv. For instance, in a `mod_python |
+<http://www.modpython.org/>`_ or `mod_wsgi <http://www.modwsgi.org/>`_ |
+environment, there is only one interpreter. |
+ |
+Luckily, it's easy. You must use the custom Python interpreter to |
+*install* libraries. But to *use* libraries, you just have to be sure |
+the path is correct. A script is available to correct the path. You |
+can setup the environment like:: |
+ |
+ activate_this = '/path/to/env/bin/activate_this.py' |
+ execfile(activate_this, dict(__file__=activate_this)) |
+ |
+This will change ``sys.path`` and even change ``sys.prefix``, but also allow |
+you to use an existing interpreter. Items in your environment will show up |
+first on ``sys.path``, before global items. However, global items will |
+always be accessible (as if the :option:`--system-site-packages` flag had been |
+used in creating the environment, whether it was or not). Also, this cannot undo |
+the activation of other environments, or modules that have been imported. |
+You shouldn't try to, for instance, activate an environment before a web |
+request; you should activate *one* environment as early as possible, and not |
+do it again in that process. |
+ |
+Making Environments Relocatable |
+------------------------------- |
+ |
+**Note:** this option is somewhat experimental, and there are probably |
+caveats that have not yet been identified. |
+ |
+.. warning:: |
+ |
+ The ``--relocatable`` option currently has a number of issues, |
+ and is not guaranteed to work in all circumstances. It is possible |
+ that the option will be deprecated in a future version of ``virtualenv``. |
+ |
+Normally environments are tied to a specific path. That means that |
+you cannot move an environment around or copy it to another computer. |
+You can fix up an environment to make it relocatable with the |
+command:: |
+ |
+ $ virtualenv --relocatable ENV |
+ |
+This will make some of the files created by setuptools use relative paths, |
+and will change all the scripts to use ``activate_this.py`` instead of using |
+the location of the Python interpreter to select the environment. |
+ |
+**Note:** scripts which have been made relocatable will only work if |
+the virtualenv is activated, specifically the python executable from |
+the virtualenv must be the first one on the system PATH. Also note that |
+the activate scripts are not currently made relocatable by |
+``virtualenv --relocatable``. |
+ |
+**Note:** you must run this after you've installed *any* packages into |
+the environment. If you make an environment relocatable, then |
+install a new package, you must run ``virtualenv --relocatable`` |
+again. |
+ |
+Also, this **does not make your packages cross-platform**. You can |
+move the directory around, but it can only be used on other similar |
+computers. Some known environmental differences that can cause |
+incompatibilities: a different version of Python, when one platform |
+uses UCS2 for its internal unicode representation and another uses |
+UCS4 (a compile-time option), obvious platform changes like Windows |
+vs. Linux, or Intel vs. ARM, and if you have libraries that bind to C |
+libraries on the system, if those C libraries are located somewhere |
+different (either different versions, or a different filesystem |
+layout). |
+ |
+If you use this flag to create an environment, currently, the |
+:option:`--system-site-packages` option will be implied. |
+ |
+The :option:`--extra-search-dir` option |
+--------------------------------------- |
+ |
+This option allows you to provide your own versions of setuptools and/or |
+pip to use instead of the embedded versions that come with virtualenv. |
+ |
+To use this feature, pass one or more ``--extra-search-dir`` options to |
+virtualenv like this:: |
+ |
+ $ virtualenv --extra-search-dir=/path/to/distributions ENV |
+ |
+The ``/path/to/distributions`` path should point to a directory that contains |
+setuptools and/or pip wheels. |
+ |
+virtualenv will look for wheels in the specified directories, but will use |
+pip's standard algorithm for selecting the wheel to install, which looks for |
+the latest compatible wheel. |
+ |
+As well as the extra directories, the search order includes: |
+ |
+#. The ``virtualenv_support`` directory relative to virtualenv.py |
+#. The directory where virtualenv.py is located. |
+#. The current directory. |
+ |
+If no satisfactory local distributions are found, virtualenv will |
+fail. Virtualenv will never download packages. |