15
15
16
16
--------------
17
17
18
+ .. _venv-def :
19
+
18
20
The :mod: `venv ` module provides support for creating lightweight "virtual
19
- environments" with their own site directories, optionally isolated from system
20
- site directories. Each virtual environment has its own Python binary (which
21
- matches the version of the binary that was used to create this environment) and
22
- can have its own independent set of installed Python packages in its site
23
- directories.
21
+ environments" with their own independent set of Python packages installed in
22
+ their site directories. A virtual environment is created on top of an existing
23
+ Python installation, known as the virtual environment's "base" Python, and may
24
+ be optionally isolated from the base's site packages, meaning
25
+ that packages installed in the base environment will not be accessible from
26
+ the virtual environment.
27
+ A virtual environment is therefore a powerful and convenient concept which
28
+ allows quick, and relatively light-weight, Python environment creation.
29
+
30
+ When used from within a virtual environment, common installation tools such as
31
+ setuptools _ and pip _ will install Python packages
32
+ into the virtual environment's site directory without needing to be told to do
33
+ so explicitly.
24
34
25
35
See :pep: `405 ` for more information about Python virtual environments.
26
36
@@ -36,54 +46,66 @@ Creating virtual environments
36
46
37
47
.. include :: /using/venv-create.inc
38
48
39
-
40
- .. _venv-def :
41
-
42
- .. note :: A virtual environment is a Python environment such that the Python
43
- interpreter, libraries and scripts installed into it are isolated from those
44
- installed in other virtual environments, and (by default) any libraries
45
- installed in a "system" Python, i.e., one which is installed as part of your
46
- operating system.
47
-
48
- A virtual environment is a directory tree which contains Python executable
49
- files and other files which indicate that it is a virtual environment.
50
-
51
- Common installation tools such as setuptools _ and pip _ work as
52
- expected with virtual environments. In other words, when a virtual
53
- environment is active, they install Python packages into the virtual
54
- environment without needing to be told to do so explicitly.
55
-
56
- When a virtual environment is active (i.e., the virtual environment's Python
57
- interpreter is running), the attributes :attr: `sys.prefix ` and
58
- :attr: `sys.exec_prefix ` point to the base directory of the virtual
59
- environment, whereas :attr: `sys.base_prefix ` and
60
- :attr: `sys.base_exec_prefix ` point to the non-virtual environment Python
61
- installation which was used to create the virtual environment. If a virtual
62
- environment is not active, then :attr: `sys.prefix ` is the same as
63
- :attr: `sys.base_prefix ` and :attr: `sys.exec_prefix ` is the same as
64
- :attr: `sys.base_exec_prefix ` (they all point to a non-virtual environment
65
- Python installation).
66
-
67
- When a virtual environment is active, any options that change the
68
- installation path will be ignored from all ``setuptools `` configuration
69
- files to prevent projects being inadvertently installed outside of the
70
- virtual environment.
71
-
72
- When working in a command shell, users can make a virtual environment active
73
- by running an ``activate `` script in the virtual environment's executables
74
- directory (the precise filename and command to use the file is
75
- shell-dependent), which prepends the virtual environment's directory for
76
- executables to the ``PATH `` environment variable for the running shell. There
77
- should be no need in other circumstances to activate a virtual
78
- environment; scripts installed into virtual environments have a "shebang"
79
- line which points to the virtual environment's Python interpreter. This means
80
- that the script will run with that interpreter regardless of the value of
81
- ``PATH ``. On Windows, "shebang" line processing is supported if you have the
82
- Python Launcher for Windows installed (this was added to Python in 3.3 - see
83
- :pep: `397 ` for more details). Thus, double-clicking an installed script in a
84
- Windows Explorer window should run the script with the correct interpreter
85
- without there needing to be any reference to its virtual environment in
86
- ``PATH ``.
49
+ Further venv detail
50
+ -------------------
51
+
52
+ When a virtual environment is running, the attributes :attr: `sys.prefix ` and
53
+ :attr: `sys.exec_prefix ` point to the prefix directory of the virtual
54
+ environment, whereas :attr: `sys.base_prefix ` and
55
+ :attr: `sys.base_exec_prefix ` point to the non-virtual environment Python
56
+ installation which was used to create the virtual environment (known as the
57
+ virtual environment's base environment). It is sufficient to check
58
+ ``sys.prefix == sys.base_prefix `` to determine if the current interpreter is
59
+ a virtual environment.
60
+
61
+ A virtual environment may be "activated" using a script in the virtual
62
+ environment's binary directory. This will prepend the virtual environment's
63
+ binary directory to your path, so that running "python" will invoke the virtual
64
+ environment's Python interpreter and you can run
65
+ installed scripts without having to use their full path. The invocation of the
66
+ activation script is platform-specific (`<venv> ` must be replaced by the path of the
67
+ directory containing the virtual environment):
68
+
69
+ +-------------+-----------------+-----------------------------------------+
70
+ | Platform | Shell | Command to activate virtual environment |
71
+ +=============+=================+=========================================+
72
+ | POSIX | bash/zsh | $ source <venv>/bin/activate |
73
+ +-------------+-----------------+-----------------------------------------+
74
+ | | fish | $ source <venv>/bin/activate.fish |
75
+ +-------------+-----------------+-----------------------------------------+
76
+ | | csh/tcsh | $ source <venv>/bin/activate.csh |
77
+ +-------------+-----------------+-----------------------------------------+
78
+ | | PowerShell Core | $ <venv>/bin/Activate.ps1 |
79
+ +-------------+-----------------+-----------------------------------------+
80
+ | Windows | cmd.exe | C:\\ > <venv>\\ Scripts\\ activate.bat |
81
+ +-------------+-----------------+-----------------------------------------+
82
+ | | PowerShell | PS C:\\ > <venv>\\ Scripts\\ Activate.ps1 |
83
+ +-------------+-----------------+-----------------------------------------+
84
+
85
+ .. versionadded :: 3.4
86
+ ``fish `` and ``csh `` activation scripts.
87
+
88
+ .. versionadded :: 3.8
89
+ PowerShell activation scripts installed under POSIX for PowerShell Core
90
+ support.
91
+
92
+ You don't specifically *need * to activate an environment, and all scripts
93
+ installed in a virtual environment should be runnable without activating it.
94
+ In order to achieve this, scripts installed into virtual environments have
95
+ a "shebang" line which points to the virtual environment's Python interpreter.
96
+ This means that the script will run with that interpreter regardless of the
97
+ value of ``PATH ``. On Windows, "shebang" line processing is supported if
98
+ you have the Python Launcher for Windows installed (this was added to Python
99
+ in 3.3 - see :pep: `397 ` for more details). Thus, double-clicking an installed
100
+ script in a Windows Explorer window should run the script with the correct
101
+ interpreter without there needing to be any reference to its virtual
102
+ environment in :envvar: `PATH `.
103
+
104
+ When a virtual environment has been activated, the :envvar: `VIRTUAL_ENV `
105
+ environment variable is set to the path of the virtual environment. Since it
106
+ is not a requirement to explicitly activate a virtual environment in order
107
+ to use it, the :envvar: `VIRTUAL_ENV ` environment variable cannot be relied
108
+ upon to determine whether a Python environment is virtual or not.
87
109
88
110
.. warning :: Because scripts installed in environments should not expect the
89
111
environment to be activated, their shebang lines contain the absolute paths
@@ -99,6 +121,17 @@ Creating virtual environments
99
121
environment in its new location. Otherwise, software installed into the
100
122
environment may not work as expected.
101
123
124
+ You can deactivate a virtual environment by typing "deactivate" in your shell.
125
+ The exact mechanism is platform-specific and is an internal implementation
126
+ detail (typically a script or shell function will be used).
127
+
128
+
129
+ .. note :: When a virtual environment is active, any options that change the
130
+ installation path will be ignored from all :mod: `distutils ` configuration
131
+ files to prevent projects being inadvertently installed outside of the
132
+ virtual environment.
133
+
134
+
102
135
.. _venv-api :
103
136
104
137
API
0 commit comments