| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | Creation of :ref:`virtual environments <venv-def>` is done by executing the | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | command ``venv``:: | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  |     python3 -m venv /path/to/new/virtual/environment | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | Running this command creates the target directory (creating any parent | 
					
						
							|  |  |  | directories that don't exist already) and places a ``pyvenv.cfg`` file in it | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | with a ``home`` key pointing to the Python installation from which the command | 
					
						
							| 
									
										
										
										
											2019-06-28 12:14:31 -07:00
										 |  |  | was run (a common name for the target directory is ``.venv``).  It also creates | 
					
						
							|  |  |  | a ``bin`` (or ``Scripts`` on Windows) subdirectory containing a copy/symlink | 
					
						
							|  |  |  | of the Python binary/binaries (as appropriate for the platform or arguments | 
					
						
							|  |  |  | used at environment creation time). It also creates an (initially empty) | 
					
						
							|  |  |  | ``lib/pythonX.Y/site-packages`` subdirectory (on Windows, this is | 
					
						
							|  |  |  | ``Lib\site-packages``). If an existing directory is specified, it will be | 
					
						
							|  |  |  | re-used. | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | .. deprecated:: 3.6 | 
					
						
							|  |  |  |    ``pyvenv`` was the recommended tool for creating virtual environments for | 
					
						
							|  |  |  |    Python 3.3 and 3.4, and is `deprecated in Python 3.6 | 
					
						
							|  |  |  |    <https://docs.python.org/dev/whatsnew/3.6.html#deprecated-features>`_.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. versionchanged:: 3.5 | 
					
						
							|  |  |  |    The use of ``venv`` is now recommended for creating virtual environments. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | .. highlight:: none | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | On Windows, invoke the ``venv`` command as follows:: | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  |     c:\>c:\Python35\python -m venv c:\path\to\myenv | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | Alternatively, if you configured the ``PATH`` and ``PATHEXT`` variables for | 
					
						
							|  |  |  | your :ref:`Python installation <using-on-windows>`:: | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-27 13:42:11 +09:00
										 |  |  |     c:\>python -m venv c:\path\to\myenv | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | The command, if run with ``-h``, will show the available options:: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-30 12:17:10 +02:00
										 |  |  |     usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear] | 
					
						
							| 
									
										
										
										
											2019-06-17 11:18:14 -07:00
										 |  |  |                 [--upgrade] [--without-pip] [--prompt PROMPT] [--upgrade-deps] | 
					
						
							| 
									
										
										
										
											2016-01-30 12:17:10 +02:00
										 |  |  |                 ENV_DIR [ENV_DIR ...] | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     Creates virtual Python environments in one or more target directories. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     positional arguments: | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  |       ENV_DIR               A directory to create the environment in. | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     optional arguments: | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  |       -h, --help            show this help message and exit | 
					
						
							|  |  |  |       --system-site-packages | 
					
						
							|  |  |  |                             Give the virtual environment access to the system | 
					
						
							|  |  |  |                             site-packages dir. | 
					
						
							|  |  |  |       --symlinks            Try to use symlinks rather than copies, when symlinks | 
					
						
							|  |  |  |                             are not the default for the platform. | 
					
						
							|  |  |  |       --copies              Try to use copies rather than symlinks, even when | 
					
						
							|  |  |  |                             symlinks are the default for the platform. | 
					
						
							|  |  |  |       --clear               Delete the contents of the environment directory if it | 
					
						
							|  |  |  |                             already exists, before environment creation. | 
					
						
							|  |  |  |       --upgrade             Upgrade the environment directory to use this version | 
					
						
							|  |  |  |                             of Python, assuming Python has been upgraded in-place. | 
					
						
							|  |  |  |       --without-pip         Skips installing or upgrading pip in the virtual | 
					
						
							|  |  |  |                             environment (pip is bootstrapped by default) | 
					
						
							| 
									
										
										
										
											2019-02-22 12:05:20 +01:00
										 |  |  |       --prompt PROMPT       Provides an alternative prompt prefix for this | 
					
						
							|  |  |  |                             environment. | 
					
						
							| 
									
										
										
										
											2019-06-17 11:18:14 -07:00
										 |  |  |       --upgrade-deps        Upgrade core dependencies: pip setuptools to the | 
					
						
							|  |  |  |                             latest version in PyPI | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     Once an environment has been created, you may wish to activate it, e.g. by | 
					
						
							|  |  |  |     sourcing an activate script in its bin directory. | 
					
						
							| 
									
										
										
										
											2015-02-07 10:52:02 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-10 16:06:34 -07:00
										 |  |  | .. versionchanged:: 3.9 | 
					
						
							| 
									
										
										
										
											2019-06-17 11:18:14 -07:00
										 |  |  |    Add ``--upgrade-deps`` option to upgrade pip + setuptools to the latest on PyPI | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-23 00:30:34 +10:00
										 |  |  | .. versionchanged:: 3.4 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  |    Installs pip by default, added the ``--without-pip``  and ``--copies`` | 
					
						
							|  |  |  |    options | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-23 19:35:12 +00:00
										 |  |  | .. versionchanged:: 3.4 | 
					
						
							|  |  |  |    In earlier versions, if the target directory already existed, an error was | 
					
						
							| 
									
										
										
										
											2018-02-18 17:52:36 +01:00
										 |  |  |    raised, unless the ``--clear`` or ``--upgrade`` option was provided. | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-30 13:49:14 -08:00
										 |  |  | .. note:: | 
					
						
							|  |  |  |    While symlinks are supported on Windows, they are not recommended. Of | 
					
						
							|  |  |  |    particular note is that double-clicking ``python.exe`` in File Explorer | 
					
						
							|  |  |  |    will resolve the symlink eagerly and ignore the virtual environment. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-02 12:00:21 -07:00
										 |  |  | .. note:: | 
					
						
							|  |  |  |    On Microsoft Windows, it may be required to enable the ``Activate.ps1`` | 
					
						
							|  |  |  |    script by setting the execution policy for the user. You can do this by | 
					
						
							|  |  |  |    issuing the following PowerShell command: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    See `About Execution Policies | 
					
						
							| 
									
										
										
										
											2020-05-25 08:13:49 -07:00
										 |  |  |    <https://go.microsoft.com/fwlink/?LinkID=135170>`_ | 
					
						
							| 
									
										
										
										
											2020-04-02 12:00:21 -07:00
										 |  |  |    for more information. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | The created ``pyvenv.cfg`` file also includes the | 
					
						
							|  |  |  | ``include-system-site-packages`` key, set to ``true`` if ``venv`` is | 
					
						
							|  |  |  | run with the ``--system-site-packages`` option, ``false`` otherwise. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-23 00:30:34 +10:00
										 |  |  | Unless the ``--without-pip`` option is given, :mod:`ensurepip` will be | 
					
						
							|  |  |  | invoked to bootstrap ``pip`` into the virtual environment. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | Multiple paths can be given to ``venv``, in which case an identical virtual | 
					
						
							|  |  |  | environment will be created, according to the given options, at each provided | 
					
						
							|  |  |  | path. | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | Once a virtual environment has been created, it can be "activated" using a | 
					
						
							|  |  |  | script in the virtual environment's binary directory. The invocation of the | 
					
						
							| 
									
										
										
										
											2018-11-21 09:40:05 +01:00
										 |  |  | script is platform-specific (`<venv>` must be replaced by the path of the | 
					
						
							|  |  |  | directory containing the virtual environment): | 
					
						
							| 
									
										
										
										
											2012-10-04 21:48:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | +-------------+-----------------+-----------------------------------------+ | 
					
						
							|  |  |  | | Platform    | Shell           | Command to activate virtual environment | | 
					
						
							|  |  |  | +=============+=================+=========================================+ | 
					
						
							| 
									
										
										
										
											2019-06-28 12:14:31 -07:00
										 |  |  | | POSIX       | bash/zsh        | $ source <venv>/bin/activate            | | 
					
						
							| 
									
										
										
										
											2012-10-04 21:48:58 +03:00
										 |  |  | +-------------+-----------------+-----------------------------------------+ | 
					
						
							| 
									
										
										
										
											2019-11-22 23:32:27 -08:00
										 |  |  | |             | fish            | $ source <venv>/bin/activate.fish       | | 
					
						
							| 
									
										
										
										
											2012-10-04 21:48:58 +03:00
										 |  |  | +-------------+-----------------+-----------------------------------------+ | 
					
						
							|  |  |  | |             | csh/tcsh        | $ source <venv>/bin/activate.csh        | | 
					
						
							|  |  |  | +-------------+-----------------+-----------------------------------------+ | 
					
						
							| 
									
										
										
										
											2019-06-28 12:14:31 -07:00
										 |  |  | |             | PowerShell Core | $ <venv>/bin/Activate.ps1               | | 
					
						
							|  |  |  | +-------------+-----------------+-----------------------------------------+ | 
					
						
							| 
									
										
										
										
											2016-06-27 13:10:47 +03:00
										 |  |  | | Windows     | cmd.exe         | C:\\> <venv>\\Scripts\\activate.bat     | | 
					
						
							| 
									
										
										
										
											2012-10-04 21:48:58 +03:00
										 |  |  | +-------------+-----------------+-----------------------------------------+ | 
					
						
							| 
									
										
										
										
											2016-06-27 13:10:47 +03:00
										 |  |  | |             | PowerShell      | PS C:\\> <venv>\\Scripts\\Activate.ps1  | | 
					
						
							| 
									
										
										
										
											2012-10-04 21:48:58 +03:00
										 |  |  | +-------------+-----------------+-----------------------------------------+ | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-30 02:38:44 -08:00
										 |  |  | When a virtual environment is active, the :envvar:`VIRTUAL_ENV` environment | 
					
						
							|  |  |  | variable is set to the path of the virtual environment. This can be used to | 
					
						
							|  |  |  | check if one is running inside a virtual environment. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | You don't specifically *need* to activate an environment; activation just | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | prepends the virtual environment's binary directory to your path, so that | 
					
						
							|  |  |  | "python" invokes the virtual environment's Python interpreter and you can run | 
					
						
							|  |  |  | installed scripts without having to use their full path. However, all scripts | 
					
						
							|  |  |  | installed in a virtual environment should be runnable without activating it, | 
					
						
							|  |  |  | and run with the virtual environment's Python automatically. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You can deactivate a virtual environment by typing "deactivate" in your shell. | 
					
						
							| 
									
										
										
										
											2019-07-26 14:57:11 -07:00
										 |  |  | The exact mechanism is platform-specific and is an internal implementation | 
					
						
							|  |  |  | detail (typically a script or shell function will be used). | 
					
						
							| 
									
										
										
										
											2012-07-10 08:21:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-25 23:21:03 -05:00
										 |  |  | .. versionadded:: 3.4 | 
					
						
							|  |  |  |    ``fish`` and ``csh`` activation scripts. | 
					
						
							| 
									
										
										
										
											2019-06-28 12:14:31 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | .. versionadded:: 3.8 | 
					
						
							|  |  |  |    PowerShell activation scripts installed under POSIX for PowerShell Core | 
					
						
							|  |  |  |    support. |