[Python-checkins] peps: Various updates to PEP 405.
vinay.sajip
python-checkins at python.org
Wed May 16 15:51:05 CEST 2012
http://hg.python.org/peps/rev/1d647da3dd16
changeset: 4393:1d647da3dd16
user: Carl Meyer <carl at oddbird.net>
date: Mon May 07 10:28:11 2012 -0600
summary:
Various updates to PEP 405.
files:
pep-0405.txt | 67 ++++++++++++++-------------------------
1 files changed, 24 insertions(+), 43 deletions(-)
diff --git a/pep-0405.txt b/pep-0405.txt
--- a/pep-0405.txt
+++ b/pep-0405.txt
@@ -225,35 +225,36 @@
----------------------
The technique in this PEP works equally well in general with a copied
-or symlinked Python binary (and other needed DLLs on Windows). Some
-users prefer a copied binary (for greater isolation from system
-changes) and some prefer a symlinked one (so that e.g. security
-updates automatically propagate to virtual environments).
+or symlinked Python binary (and other needed DLLs on Windows).
+Symlinking is preferable where possible, because in the case of an
+upgrade to the underlying Python installation, a Python executable
+copied in a venv might become out-of-sync with the installed standard
+library and require manual upgrade.
There are some cross-platform difficulties with symlinks:
* Not all Windows versions support symlinks, and even on those that
do, creating them often requires administrator privileges.
-* On OSX framework builds of Python, sys.executable is just a stub
+* On OS X framework builds of Python, sys.executable is just a stub
that executes the real Python binary. Symlinking this stub does not
- work with the implementation in this PEP; it must be copied.
- (Fortunately the stub is also small, so copying it is not an issue).
+ work; it must be copied. (Fortunately the stub is also small, and
+ not changed by bugfix upgrades to Python, so copying it is not an
+ issue).
-Because of these issues, this PEP proposes to copy the Python binary
-by default, to maintain cross-platform consistency in the default
-behavior.
+Thus, this PEP proposes to symlink the binary on all platforms except
+for Windows, and OS X framework builds. A ``--symlink`` option is
+available to force the use of symlinks on Windows versions that
+support them, if the appropriate permissions are available. (This
+option has no effect on OS X framework builds, since symlinking can
+never work there, and has no advantages).
-The ``pyvenv`` script accepts a ``--symlink`` option. If this option
-is provided, the script will attempt to symlink instead of copy. If a
-symlink fails (e.g. because they are not supported by the platform, or
-additional privileges are needed), the script will warn the user and
-fall back to a copy.
-
-On OSX framework builds, where a symlink of the executable would
-succeed but create a non-functional virtual environment, the script
-will fail with an error message that symlinking is not supported on
-OSX framework builds.
+On Windows, if ``--symlink`` is not used, this means that if the
+underlying Python installation is upgraded, the Python binary and DLLs
+in the venv should be updated, or there could be issues of mismatch
+with the upgraded standard library. The pyvenv script accepts a
+``--upgrade`` option for easily performing this upgrade on an existing
+venv.
API
@@ -480,33 +481,12 @@
really because there's no supporting concept in ``Python/sysconfig``.
-Testability and Source Build Issues
------------------------------------
-
-Currently in the reference implementation, virtual environments must
-be created with an installed Python, rather than a source build, as
-the base installation. In order to be able to fully test the ``venv``
-module in the Python regression test suite, some anomalies in how
-sysconfig data is configured in source builds will need to be removed.
-For example, ``sysconfig.get_paths()`` in a source build gives
-(partial output)::
-
- {
- 'include': '/home/vinay/tools/pythonv/Include',
- 'libdir': '/usr/lib ; or /usr/lib64 on a multilib system',
- 'platinclude': '/home/vinay/tools/pythonv',
- 'platlib': '/usr/local/lib/python3.3/site-packages',
- 'platstdlib': '/usr/local/lib/python3.3',
- 'purelib': '/usr/local/lib/python3.3/site-packages',
- 'stdlib': '/usr/local/lib/python3.3'
- }
-
-
OS X Framework builds
---------------------
-The reference implementation currently does not work on an OS X
-framework build of Python.
+There have been some reports that the reference implementation does
+not work on an OS X framework build of Python, but it seems to work
+for us. This needs further investigation.
tkinter
--
Repository URL: http://hg.python.org/peps
More information about the Python-checkins
mailing list