[Python-checkins] peps: Add PEP 486 by Paul Moore.
berker.peksag
python-checkins at python.org
Thu Feb 12 20:13:53 CET 2015
https://hg.python.org/peps/rev/979e56a2ee51
changeset: 5695:979e56a2ee51
user: Berker Peksag <berker.peksag at gmail.com>
date: Thu Feb 12 21:13:56 2015 +0200
summary:
Add PEP 486 by Paul Moore.
Also, update Paul's email address.
files:
pep-0250.txt | 2 +-
pep-0302.txt | 2 +-
pep-0310.txt | 2 +-
pep-0486.txt | 149 +++++++++++++++++++++++++++++++++++++++
4 files changed, 152 insertions(+), 3 deletions(-)
diff --git a/pep-0250.txt b/pep-0250.txt
--- a/pep-0250.txt
+++ b/pep-0250.txt
@@ -2,7 +2,7 @@
Title: Using site-packages on Windows
Version: $Revision$
Last-Modified: $Date$
-Author: gustav at morpheus.demon.co.uk (Paul Moore)
+Author: p.f.moore at gmail.com (Paul Moore)
Status: Final
Type: Standards Track
Created: 30-Mar-2001
diff --git a/pep-0302.txt b/pep-0302.txt
--- a/pep-0302.txt
+++ b/pep-0302.txt
@@ -3,7 +3,7 @@
Version: $Revision$
Last-Modified: $Date$
Author: Just van Rossum <just at letterror.com>,
- Paul Moore <gustav at morpheus.demon.co.uk>
+ Paul Moore <p.f.moore at gmail.com>
Status: Final
Type: Standards Track
Content-Type: text/x-rst
diff --git a/pep-0310.txt b/pep-0310.txt
--- a/pep-0310.txt
+++ b/pep-0310.txt
@@ -3,7 +3,7 @@
Version: $Revision$
Last-Modified: $Date$
Author: Michael Hudson <mwh at python.net>,
- Paul Moore <gustav at morpheus.demon.co.uk>
+ Paul Moore <p.f.moore at gmail.com>
Status: Rejected
Type: Standards Track
Content-Type: text/plain
diff --git a/pep-0486.txt b/pep-0486.txt
new file mode 100644
--- /dev/null
+++ b/pep-0486.txt
@@ -0,0 +1,149 @@
+PEP: 486
+Title: Make the Python Launcher aware of virtual environments
+Version: $Revision$
+Last-Modified: $Date$
+Author: Paul Moore <p.f.moore at gmail.com>
+Status: Draft
+Type: Standards Track
+Content-Type: text/x-rst
+Created: 12-Feb-2015
+Python-Version: 3.5
+Post-History:
+
+
+Abstract
+========
+
+The Windows installers for Python include a launcher that locates the
+correct Python interpreter to run (see PEP 397). However, the
+launcher is not aware of virtual environments (virtualenv [1]_ or PEP
+405 based), and so cannot be used to run commands from the active
+virtualenv.
+
+This PEP proposes making the launcher "virtualenv aware". This means
+that when run without specifying an explicit Python interpreter to
+use, the launcher will use the currently active virtualenv, if any,
+before falling back to the configured default Python.
+
+
+Rationale
+=========
+
+Windows users with multiple copies of Python installed need a means of
+selecting which one to use. The Python launcher provides this
+facility by means of a ``py`` command that can be used to run either a
+configured "default" Python or a specific interpreter, by means of
+command line arguments. So typical usage would be::
+
+ # Run the Python interactive interpreter
+ py
+
+ # Execute an installed module
+ py -m pip install pytest
+ py -m pytest
+
+When using virtual environments, the ``py`` launcher is unaware that a
+virtualenv is active, and will continue to use the system Python. So
+different command invocations are needed to run the same commands in a
+virtualenv::
+
+ # Run the Python interactive interpreter
+ python
+
+ # Execute an installed module (these could use python -m,
+ # which is longer to type but is a little mopre similar to the
+ # launcher approach)
+ pip install pytest
+ py.test
+
+Having to use different commands is is error-prone, and in many cases
+the error is difficult to spot immediately. The PEP proposes making
+the ``py`` command usable with virtual environments, so that the first
+form of command can be used in all cases.
+
+
+Implementation
+==============
+
+Both ``virtualenv`` and the core ``venv`` module set an environment
+variable ``VIRTUAL_ENV`` when activating a virtualenv. This PEP
+proposes that the launcher checks for the ``VIRTUAL_ENV`` environment
+variable whenever it would run the "default" Python interpreter for
+the system (i.e., when no specific version flags such as ``py -2.7``
+are used) and if present, run the Python interpreter for the
+virtualenv rather than the default system Python.
+
+The "default" Python interpreter referred to above is (as per PEP 397)
+either the latest version of Python installed on the system, or
+a version configured via the ``py.ini`` configuration file. When the
+user specifies an explicit Python version on the command line, this
+will always be used (as at present).
+
+
+Impact on Script Launching
+==========================
+
+As well as interactive use, the launcher is used as the Windows file
+association for Python scripts. In that case, a "shebang" (``#!``)
+line at the start of the script is used to identify the interpreter to
+run. A fully-qualified path can be used, or a version-specific Python
+(``python3`` or ``python2``, or even ``python3.5``), or the generic
+``python``, which means to use the default interpreter.
+
+With the proposed change, scripts that start with ``#!python`` (or one
+of its equivalent forms) will be run using an active virtualenv. This
+is a change in behaviour, although it will only affect users running
+scripts from the command line with a virtualenv activated.
+
+Under Unix, the ``#!/usr/bin/env python`` shebang line will use the
+version of Python found on ``$PATH``, whereas ``#!/usr/bin/python``
+will use the system Python. In order to match Unix behaviour as
+closely as possible, it is proposed that the two shebang forms::
+
+ #!/usr/bin/env python
+ #!python
+
+use an active virtualenv, if present, whereas the forms::
+
+ #!/usr/bin/python
+ #!/usr/local/bin/python
+
+use *only* the default system Python, and ignore the ``VIRTUAL_ENV``
+environment variable.
+
+
+Exclusions
+==========
+
+The PEP makes no attempt to promote the use of the launcher for
+running Python on Windows. Most existing documentation assumes the
+user of ``python`` as the command to run Python, and (for example)
+``pip`` to run an installed Python command. This documentation is not
+expected to change, and users who choose to manage their ``PATH``
+environment variable can continue to use this form. The focus of this
+PEP is purely on allowing users who prefer to use the launcher when
+dealing with their system Python installations, to be able to continue
+to do so when using virtual environments.
+
+
+References
+==========
+
+.. [1] https://virtualenv.pypa.io/
+
+
+Copyright
+=========
+
+This document has been placed in the public domain.
+
+
+
+..
+ Local Variables:
+ mode: indented-text
+ indent-tabs-mode: nil
+ sentence-end-double-space: t
+ fill-column: 70
+ coding: utf-8
+ End:
--
Repository URL: https://hg.python.org/peps
More information about the Python-checkins
mailing list