Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Python: Checkins

peps (merge default -> default): Merged Carl Meyer's updates to PEP 405.

 

 

Python checkins RSS feed   Index | Next | Previous | View Threaded


python-checkins at python

May 17, 2012, 4:42 PM

Post #1 of 1 (43 views)
Permalink
peps (merge default -> default): Merged Carl Meyer's updates to PEP 405.

http://hg.python.org/peps/rev/f5182f1d9c5c
changeset: 4408:f5182f1d9c5c
parent: 4402:2ed614d32a5e
parent: 4407:8cbef1f07cb9
user: Vinay Sajip <vinay_sajip [at] yahoo>
date: Fri May 18 00:42:11 2012 +0100
summary:
Merged Carl Meyer's updates to PEP 405.

files:
pep-0405.txt | 101 +++++++++++++++++++++-----------------
1 files changed, 56 insertions(+), 45 deletions(-)


diff --git a/pep-0405.txt b/pep-0405.txt
--- a/pep-0405.txt
+++ b/pep-0405.txt
@@ -222,6 +222,22 @@
those files when Python is run from the venv.


+Sysconfig install schemes and user-site
+---------------------------------------
+
+This approach explicitly chooses not to introduce a new sysconfig
+install scheme for venvs. Rather, by modifying ``sys.prefix`` we
+ensure that existing install schemes which base locations on
+``sys.prefix`` will simply work in a venv. Installation to other
+install schemes (for instance, the user-site schemes) whose paths are
+not relative to ``sys.prefix``, will not be affected by a venv at all.
+
+It may be feasible to create an alternative implementation of Python
+virtual environments based on a virtual-specific sysconfig scheme, but
+it would be less robust, as it would require more code to be aware of
+whether it is operating within a virtual environment or not.
+
+
Copies versus symlinks
----------------------

@@ -258,6 +274,45 @@
venv.


+Include files
+-------------
+
+Current virtualenv handles include files in this way:
+
+On POSIX systems where the installed Python's include files are found
+in ``${base_prefix}/include/pythonX.X``, virtualenv creates
+``${venv}/include/`` and symlink ``${base_prefix}/include/pythonX.X``
+to ``${venv}/include/pythonX.X``. On Windows, where Python's include
+files are found in ``{{ sys.prefix }}/Include`` and symlinks are not
+reliably available, virtualenv copies ``{{ sys.prefix }}/Include`` to
+``${venv}/Include``. This ensures that extension modules built and
+installed within the virtualenv will always find the Python header
+files they need in the expected location relative to ``sys.prefix``.
+
+This solution is not ideal when an extension module installs its own
+header files, as the default installation location for those header
+files may be a symlink to a system directory that may not be
+writable. One installer, pip, explicitly works around this by
+installing header files to a nonstandard location
+``${venv}/include/site/pythonX.X/``, as in Python there's currently no
+standard abstraction for a site-specific include directory.
+
+This PEP proposes a slightly different approach, though one with
+essentially the same effect and the same set of advantages and
+disadvantages. Rather than symlinking or copying include files into
+the venv, we simply modify the sysconfig schemes so that header files
+are always looked for relative to ``base_prefix`` rather than
+``prefix``. (We also create an ``include/`` directory within the venv
+
+Better handling of include files in distutils/packaging and, by
+extension, pyvenv, is an area that may deserve its own future PEP. For
+now, we propose that the behavior of virtualenv has thus far proved
+itself to be at least "good enough" in practice.
+
+[.Open question: should pyvenv instead simply copy the behavior of
+virtualenv entirely, to avoid introducing unexpected new issues here?]
+
+
API
---

@@ -449,53 +504,6 @@
locating and parsing the ``pyvenv.cfg`` file, if it is present.


-Open Questions
-==============
-
-What about include files?
--------------------------
-
-For example, ZeroMQ installs ``zmq.h`` and ``zmq_utils.h`` in
-``$VE/include``, whereas SIP (part of PyQt4) installs sip.h by default
-in ``$VE/include/pythonX.Y``. With virtualenv, everything works
-because the PythonX.Y include is symlinked, so everything that's
-needed is in ``$VE/include``. At the moment the reference
-implementation doesn't do anything with include files, besides
-creating the include directory; this might need to change, to
-copy/symlink ``$VE/include/pythonX.Y``.
-
-As in Python there's no abstraction for a site-specific include
-directory, other than for platform-specific stuff, then the user
-expectation would seem to be that all include files anyone could ever
-want should be found in one of just two locations, with sysconfig
-labels "include" & "platinclude".
-
-There's another issue: what if includes are Python-version-specific?
-For example, SIP installs by default into ``$VE/include/pythonX.Y``
-rather than ``$VE/include``, presumably because there's
-version-specific stuff in there - but even if that's not the case with
-SIP, it could be the case with some other package. And the problem
-that gives is that you can't just symlink the ``include/pythonX.Y``
-directory, but actually have to provide a writable directory and
-symlink/copy the contents from the system ``include/pythonX.Y``. Of
-course this is not hard to do, but it does seem inelegant. OTOH it's
-really because there's no supporting concept in ``Python/sysconfig``.
-
-
-OS X Framework builds
----------------------
-
-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
--------
-
-Tkinter apps currently do not work within a virtual environment.
-
-
Reference Implementation
========================

@@ -505,7 +513,7 @@
installed Python, run ``bin/pyvenv /path/to/new/virtualenv`` to create
a virtual environment.

-.. _a clone of the CPython Mercurial repository: https://bitbucket.org/vinay.sajip/pythonv
+.. _a clone of the CPython Mercurial repository: http://hg.python.org/sandbox/vsajip#venv


Copyright

--
Repository URL: http://hg.python.org/peps

Python checkins RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.