Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3b7e020

Browse files
vsajipCAM-Gerlachpelson
authored
[3.11] [doc] Refresh the venv introduction documentation, and correct the st… (GH-98465)
Co-authored-by: C.A.M. Gerlach <CAM.Gerlach@Gerlach.CAM>Co-authored-by: Phil Elson <pelson.pub@gmail.com>
1 parentf0c0d30 commit3b7e020

File tree

2 files changed

+123
-95
lines changed

2 files changed

+123
-95
lines changed

‎Doc/library/venv.rst‎

Lines changed: 123 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,22 @@
1515

1616
--------------
1717

18-
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.
18+
.. _venv-def:
19+
.. _venv-intro:
20+
21+
The:mod:`!venv` module supports creating lightweight "virtual environments",
22+
each with their own independent set of Python packages installed in
23+
their:mod:`site` directories.
24+
A virtual environment is created on top of an existing
25+
Python installation, known as the virtual environment's "base" Python, and may
26+
optionally be isolated from the packages in the base environment,
27+
so only those explicitly installed in the virtual environment are available.
28+
29+
When used from within a virtual environment, common installation tools such as
30+
`pip`_ will install Python packages into a virtual environment
31+
without needing to be told to do so explicitly.
2432

25-
See:pep:`405` for moreinformation about Python virtual environments.
33+
See:pep:`405` for morebackground on Python virtual environments.
2634

2735
..seealso::
2836

@@ -36,54 +44,72 @@ Creating virtual environments
3644

3745
..include::/using/venv-create.inc
3846

47+
.. _venv-explanation:
3948

40-
.. _venv-def:
49+
How venvs work
50+
--------------
4151

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 assetuptools_ andpip_ 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:mod:`distutils` 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``.
52+
When a Python interpreter is running from a virtual environment,
53+
:data:`sys.prefix` and:data:`sys.exec_prefix`
54+
point to the directories of the virtual environment,
55+
whereas:data:`sys.base_prefix` and:data:`sys.base_exec_prefix`
56+
point to those of the base Python used to create the environment.
57+
It is sufficient to check
58+
``sys.prefix == sys.base_prefix`` to determine if the current interpreter is
59+
running from a virtual environment.
60+
61+
A virtual environment may be "activated" using a script in its binary directory
62+
(``bin`` on POSIX; ``Scripts`` on Windows).
63+
This will prepend that directory to your:envvar:`!PATH`, so that running
64+
:program:`!python` will invoke the environment's Python interpreter
65+
and you can run installed scripts without having to use their full path.
66+
The invocation of the activation script is platform-specific
67+
(:samp:`{<venv>}` must be replaced by the path to the directory
68+
containing the virtual environment):
69+
70+
+-------------+------------+--------------------------------------------------+
71+
| Platform| Shell| Command to activate virtual environment|
72+
+=============+============+==================================================+
73+
| POSIX| bash/zsh|:samp:`$ source{<venv>}/bin/activate`|
74+
|+------------+--------------------------------------------------+
75+
|| fish|:samp:`$ source{<venv>}/bin/activate.fish`|
76+
|+------------+--------------------------------------------------+
77+
|| csh/tcsh|:samp:`$ source{<venv>}/bin/activate.csh`|
78+
|+------------+--------------------------------------------------+
79+
|| PowerShell|:samp:`${<venv>}/bin/Activate.ps1`|
80+
+-------------+------------+--------------------------------------------------+
81+
| Windows| cmd.exe|:samp:`C:\\>{<venv>}\\Scripts\\activate.bat`|
82+
|+------------+--------------------------------------------------+
83+
|| PowerShell|:samp:`PS C:\\>{<venv>}\\Scripts\\Activate.ps1`|
84+
+-------------+------------+--------------------------------------------------+
85+
86+
..versionadded::3.4
87+
:program:`!fish` and:program:`!csh` activation scripts.
88+
89+
..versionadded::3.8
90+
PowerShell activation scripts installed under POSIX for PowerShell Core
91+
support.
92+
93+
You don't specifically *need* to activate a virtual environment,
94+
as you can just specify the full path to that environment's
95+
Python interpreter when invoking Python.
96+
Furthermore, all scripts installed in the environment
97+
should be runnable without activating it.
98+
99+
In order to achieve this, scripts installed into virtual environments have
100+
a "shebang" line which points to the environment's Python interpreter,
101+
i.e.:samp:`#!/{<path-to-venv>}/bin/python`.
102+
This means that the script will run with that interpreter regardless of the
103+
value of:envvar:`!PATH`. On Windows, "shebang" line processing is supported if
104+
you have the:ref:`launcher` installed. Thus, double-clicking an installed
105+
script in a Windows Explorer window should run it with the correct interpreter
106+
without the environment needing to be activated or on the:envvar:`!PATH`.
107+
108+
When a virtual environment has been activated, the:envvar:`!VIRTUAL_ENV`
109+
environment variable is set to the path of the environment.
110+
Since explicitly activating a virtual environment is not required to use it,
111+
:envvar:`!VIRTUAL_ENV` cannot be relied upon to determine
112+
whether a virtual environment is being used.
87113

88114
..warning::Because scripts installed in environments should not expect the
89115
environment to be activated, their shebang lines contain the absolute paths
@@ -99,6 +125,11 @@ Creating virtual environments
99125
environment in its new location. Otherwise, software installed into the
100126
environment may not work as expected.
101127

128+
You can deactivate a virtual environment by typing ``deactivate`` in your shell.
129+
The exact mechanism is platform-specific and is an internal implementation
130+
detail (typically, a script or shell function will be used).
131+
132+
102133
.. _venv-api:
103134

104135
API
@@ -191,6 +222,45 @@ creation according to their needs, the :class:`EnvBuilder` class.
191222
``clear=True``, contents of the environment directory will be cleared
192223
and then all necessary subdirectories will be recreated.
193224

225+
The returned context object is a:class:`types.SimpleNamespace` with the
226+
following attributes:
227+
228+
* ``env_dir`` - The location of the virtual environment. Used for
229+
``__VENV_DIR__`` in activation scripts (see:meth:`install_scripts`).
230+
231+
* ``env_name`` - The name of the virtual environment. Used for
232+
``__VENV_NAME__`` in activation scripts (see:meth:`install_scripts`).
233+
234+
* ``prompt`` - The prompt to be used by the activation scripts. Used for
235+
``__VENV_PROMPT__`` in activation scripts (see:meth:`install_scripts`).
236+
237+
* ``executable`` - The underlying Python executable used by the virtual
238+
environment. This takes into account the case where a virtual environment
239+
is created from another virtual environment.
240+
241+
* ``inc_path`` - The include path for the virtual environment.
242+
243+
* ``lib_path`` - The purelib path for the virtual environment.
244+
245+
* ``bin_path`` - The script path for the virtual environment.
246+
247+
* ``bin_name`` - The name of the script path relative to the virtual
248+
environment location. Used for ``__VENV_BIN_NAME__`` in activation
249+
scripts (see:meth:`install_scripts`).
250+
251+
* ``env_exe`` - The name of the Python interpreter in the virtual
252+
environment. Used for ``__VENV_PYTHON__`` in activation scripts
253+
(see:meth:`install_scripts`).
254+
255+
* ``env_exec_cmd`` - The name of the Python interpreter, taking into
256+
account filesystem redirections. This can be used to run Python in
257+
the virtual environment.
258+
259+
260+
..versionchanged::3.12
261+
The attribute ``lib_path`` was added to the context, and the context
262+
object was documented.
263+
194264
..versionchanged::3.11
195265
The *venv*
196266
:ref:`sysconfig installation scheme<installation_paths>`

‎Doc/using/venv-create.inc‎

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -105,45 +105,3 @@ Multiple paths can be given to ``venv``, in which case an identical virtual
105105
environment will be created, according to the given options, at each provided
106106
path.
107107
108-
Once a virtual environment has been created, it can be "activated" using a
109-
script in the virtual environment's binary directory. The invocation of the
110-
script is platform-specific (`<venv>` must be replaced by the path of the
111-
directory containing thevirtual environment):
112-
113-
+-------------+-----------------+-----------------------------------------+
114-
| Platform | Shell | Command to activate virtual environment |
115-
+=============+=================+=========================================+
116-
| POSIX | bash/zsh | $ source <venv>/bin/activate |
117-
+-------------+-----------------+-----------------------------------------+
118-
| | fish | $ source <venv>/bin/activate.fish |
119-
+-------------+-----------------+-----------------------------------------+
120-
| | csh/tcsh | $ source <venv>/bin/activate.csh |
121-
+-------------+-----------------+-----------------------------------------+
122-
| | PowerShell Core | $ <venv>/bin/Activate.ps1 |
123-
+-------------+-----------------+-----------------------------------------+
124-
| Windows | cmd.exe | C:\\> <venv>\\Scripts\\activate.bat |
125-
+-------------+-----------------+-----------------------------------------+
126-
| | PowerShell | PS C:\\> <venv>\\Scripts\\Activate.ps1 |
127-
+-------------+-----------------+-----------------------------------------+
128-
129-
When a virtual environment is active, the :envvar:`VIRTUAL_ENV` environment
130-
variable is set to the path of the virtual environment. This can be used to
131-
check if one is running inside a virtual environment.
132-
133-
You don't specifically *need* to activate an environment; activation just
134-
prepends thevirtual environment's binary directory to your path, so that
135-
"python" invokes the virtual environment's Python interpreterand you can run
136-
installed scripts without having to use their full path. However, all scripts
137-
installed in avirtual environment should be runnable without activating it,
138-
and run with thevirtual environment's Python automatically.
139-
140-
You can deactivate a virtual environment by typing "deactivate" in your shell.
141-
The exact mechanism is platform-specific and is an internal implementation
142-
detail (typically a script or shell function will be used).
143-
144-
.. versionadded:: 3.4
145-
``fish`` and ``csh`` activation scripts.
146-
147-
.. versionadded:: 3.8
148-
PowerShell activation scripts installed under POSIX for PowerShell Core
149-
support.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp