You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/index.rst
+34-1Lines changed: 34 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -30,7 +30,12 @@ virtualenv
30
30
:target:https://pypistats.org/packages/virtualenv
31
31
:alt:Package popularity
32
32
33
-
``virtualenv`` is a tool to create isolated Python environments. Since Python ``3.3``, a subset of it has been
33
+
``virtualenv`` is a tool to create isolated Python environments.
34
+
35
+
virtualenv vs venv
36
+
------------------
37
+
38
+
Since Python ``3.3``, a subset of it has been
34
39
integrated into the standard library under the `venv module <https://docs.python.org/3/library/venv.html>`_. The
35
40
``venv`` module does not offer all features of this library, to name just a few more prominent:
36
41
@@ -40,6 +45,9 @@ integrated into the standard library under the `venv module <https://docs.python
40
45
- is not upgrade-able via `pip <https://pip.pypa.io/en/stable/installing/>`_,
41
46
- does not have as rich programmatic API (describe virtual environments without creating them).
42
47
48
+
Concept and purpose of virtualenv
49
+
---------------------------------
50
+
43
51
The basic problem being addressed is one of dependencies and versions, and indirectly permissions.
44
52
Imagine you have an application that needs version ``1`` of ``LibFoo``, but another application requires version
45
53
``2``. How can you use both these libraries? If you install everything into your host python (e.g. ``python3.8``)
@@ -53,6 +61,31 @@ In all these cases, ``virtualenv`` can help you. It creates an environment that
53
61
that doesn't share libraries with other virtualenv environments (and optionally doesn't access the globally installed
54
62
libraries either).
55
63
64
+
65
+
Compatibility
66
+
-------------
67
+
68
+
With the release of virtualenv 20.22, April 2023, (`release note <https://virtualenv.pypa.io/en/latest/changelog.html#v20-22-0-2023-04-19>`__) target interpreters are now limited to Python v. 3.7+.
69
+
70
+
Trying to use an earlier version will normally result in the target interpreter raising a syntax error. This virtualenv tool will then print some details about the exception and abort, ie no explicit warning about trying to use an outdated/incompatible version. It may look like this:
71
+
72
+
.. code-block:: console
73
+
74
+
$ virtualenv --discovery pyenv -p python3.6 foo
75
+
RuntimeError: failed to query /home/velle/.pyenv/versions/3.6.15/bin/python3.6 with code 1 err: ' File "/home/velle/.virtualenvs/toxrunner/lib/python3.12/site-packages/virtualenv/discovery/py_info.py", line 7
76
+
from __future__ import annotations
77
+
^
78
+
SyntaxError: future feature annotations is not defined
79
+
80
+
81
+
In tox, even if the interpreter is installed and available, the message is (somewhat misleading):
82
+
83
+
.. code-block:: console
84
+
85
+
py36: skipped because could not find python interpreter with spec(s): py36
0 commit comments