blob: 706ac5d6bd20e3cc0201733455e106a8663116b9 [file] [log] [blame]
Vinay Sajipc4618e32012-07-10 08:21:07 +01001Creation of :ref:`virtual environments <venv-def>` is done by executing the
2``pyvenv`` script::
3
4 pyvenv /path/to/new/virtual/environment
5
6Running this command creates the target directory (creating any parent
7directories that don't exist already) and places a ``pyvenv.cfg`` file in it
8with a ``home`` key pointing to the Python installation the command was run
9from. It also creates a ``bin`` (or ``Scripts`` on Windows) subdirectory
10containing a copy of the ``python`` binary (or binaries, in the case of
11Windows). It also creates an (initially empty) ``lib/pythonX.Y/site-packages``
12subdirectory (on Windows, this is ``Lib\site-packages``).
13
14.. highlight:: none
15
16On Windows, you may have to invoke the ``pyvenv`` script as follows, if you
17don't have the relevant PATH and PATHEXT settings::
18
19 c:\Temp>c:\Python33\python c:\Python33\Tools\Scripts\pyvenv.py myenv
20
21or equivalently::
22
23 c:\Temp>c:\Python33\python -m venv myenv
24
25The command, if run with ``-h``, will show the available options::
26
27 usage: pyvenv [-h] [--system-site-packages] [--symlinks] [--clear]
28 [--upgrade] ENV_DIR [ENV_DIR ...]
29
30 Creates virtual Python environments in one or more target directories.
31
32 positional arguments:
33 ENV_DIR A directory to create the environment in.
34
35 optional arguments:
36 -h, --help show this help message and exit
37 --system-site-packages Give access to the global site-packages dir to the
38 virtual environment.
39 --symlinks Try to use symlinks rather than copies, when symlinks
40 are not the default for the platform.
41 --clear Delete the environment directory if it already exists.
42 If not specified and the directory exists, an error is
43 raised.
44 --upgrade Upgrade the environment directory to use this version
45 of Python, assuming Python has been upgraded in-place.
46
47If the target directory already exists an error will be raised, unless
48the ``--clear`` or ``--upgrade`` option was provided.
49
50The created ``pyvenv.cfg`` file also includes the
51``include-system-site-packages`` key, set to ``true`` if ``venv`` is
52run with the ``--system-site-packages`` option, ``false`` otherwise.
53
54Multiple paths can be given to ``pyvenv``, in which case an identical
55virtualenv will be created, according to the given options, at each
56provided path.
57
58Once a venv has been created, it can be "activated" using a script in the
Andrew Svetlov65e9c572012-10-04 21:48:58 +030059venv's binary directory. The invocation of the script is platform-specific:
Vinay Sajipc4618e32012-07-10 08:21:07 +010060
Andrew Svetlov65e9c572012-10-04 21:48:58 +030061+-------------+-----------------+-----------------------------------------+
62| Platform | Shell | Command to activate virtual environment |
63+=============+=================+=========================================+
64| Posix | bash/zsh | $ source <venv>/bin/activate |
65+-------------+-----------------+-----------------------------------------+
66| | fish | $ . <venv>/bin/activate.fish |
67+-------------+-----------------+-----------------------------------------+
68| | csh/tcsh | $ source <venv>/bin/activate.csh |
69+-------------+-----------------+-----------------------------------------+
70| Windows | cmd.exe | C:\> <venv>/Scripts/activate.bat |
71+-------------+-----------------+-----------------------------------------+
72| | PowerShell | PS C:\> <venv>/Scripts/Activate.ps1 |
73+-------------+-----------------+-----------------------------------------+
Vinay Sajipc4618e32012-07-10 08:21:07 +010074
75You don't specifically *need* to activate an environment; activation just
76prepends the venv's binary directory to your path, so that "python" invokes the
77venv's Python interpreter and you can run installed scripts without having to
78use their full path. However, all scripts installed in a venv should be
79runnable without activating it, and run with the venv's Python automatically.
80
81You can deactivate a venv by typing "deactivate" in your shell. The exact
82mechanism is platform-specific: for example, the Bash activation script defines
83a "deactivate" function, whereas on Windows there are separate scripts called
84``deactivate.bat`` and ``Deactivate.ps1`` which are installed when the venv is
85created.
86