2002-07-29 14:22:36 -04:00
|
|
|
|
PEP: 297
|
2002-07-23 11:14:06 -04:00
|
|
|
|
Title: Support for System Upgrades
|
|
|
|
|
Version: $Revision$
|
2006-03-23 15:13:19 -05:00
|
|
|
|
Last-Modified: $Date$
|
2006-03-02 14:54:50 -05:00
|
|
|
|
Author: mal@lemburg.com (Marc-André Lemburg)
|
2002-07-23 11:14:06 -04:00
|
|
|
|
Status: Draft
|
|
|
|
|
Type: Standards Track
|
|
|
|
|
Python-Version: 2.3
|
|
|
|
|
Created: 19-Jul-2001
|
|
|
|
|
Post-History:
|
|
|
|
|
|
|
|
|
|
Abstract
|
|
|
|
|
|
|
|
|
|
This PEP proposes strategies to allow the Python standard library
|
|
|
|
|
to be upgraded in parts without having to reinstall the complete
|
|
|
|
|
distribution or having to wait for a new patch level release.
|
|
|
|
|
|
2002-07-29 14:22:36 -04:00
|
|
|
|
|
2002-07-23 11:14:06 -04:00
|
|
|
|
Problem
|
|
|
|
|
|
|
|
|
|
Python currently does not allow overriding modules or packages in
|
|
|
|
|
the standard library per default. Even though this is possible by
|
|
|
|
|
defining a PYTHONPATH environment variable (the paths defined in
|
|
|
|
|
this variable are prepended to the Python standard library path),
|
|
|
|
|
there is no standard way of achieving this without changing the
|
|
|
|
|
configuration.
|
|
|
|
|
|
|
|
|
|
Since Python's standard library is starting to host packages which
|
|
|
|
|
are also available separately, e.g. the distutils, email and PyXML
|
|
|
|
|
packages, which can also be installed independently of the Python
|
2002-07-29 14:22:36 -04:00
|
|
|
|
distribution, it is desirable to have an option to upgrade these
|
2002-07-23 11:14:06 -04:00
|
|
|
|
packages without having to wait for a new patch level release of
|
|
|
|
|
the Python interpreter to bring along the changes.
|
|
|
|
|
|
2002-07-29 14:22:36 -04:00
|
|
|
|
|
2002-07-23 11:14:06 -04:00
|
|
|
|
Proposed Solutions
|
|
|
|
|
|
|
|
|
|
This PEP proposes two different but not necessarily conflicting
|
|
|
|
|
solutions:
|
|
|
|
|
|
|
|
|
|
1. Adding a new standard search path to sys.path:
|
|
|
|
|
$stdlibpath/system-packages just before the $stdlibpath
|
|
|
|
|
entry. This complements the already existing entry for site
|
|
|
|
|
add-ons $stdlibpath/site-packages which is appended to the
|
|
|
|
|
sys.path at interpreter startup time.
|
|
|
|
|
|
|
|
|
|
To make use of this new standard location, distutils will need
|
|
|
|
|
to grow support for installing certain packages in
|
|
|
|
|
$stdlibpath/system-packages rather than the standard location
|
|
|
|
|
for third-party packages $stdlibpath/site-packages.
|
|
|
|
|
|
|
|
|
|
2. Tweaking distutils to install directly into $stdlibpath for the
|
|
|
|
|
system upgrades rather than into $stdlibpath/site-packages.
|
|
|
|
|
|
|
|
|
|
The first solution has a few advantages over the second:
|
|
|
|
|
|
|
|
|
|
* upgrades can be easily identified (just look in
|
|
|
|
|
$stdlibpath/system-packages)
|
|
|
|
|
|
2002-07-29 14:22:36 -04:00
|
|
|
|
* upgrades can be de-installed without affecting the rest
|
2002-07-23 11:14:06 -04:00
|
|
|
|
of the interpreter installation
|
|
|
|
|
|
|
|
|
|
* modules can be virtually removed from packages; this is
|
|
|
|
|
due to the way Python imports packages: once it finds the
|
|
|
|
|
top-level package directory it stay in this directory for
|
|
|
|
|
all subsequent package submodule imports
|
|
|
|
|
|
|
|
|
|
* the approach has an overall much cleaner design than the
|
|
|
|
|
hackish install on top of an existing installation approach
|
|
|
|
|
|
|
|
|
|
The only advantages of the second approach are that the Python
|
|
|
|
|
interpreter does not have to changed and that it works with
|
|
|
|
|
older Python versions.
|
|
|
|
|
|
|
|
|
|
Both solutions require changes to distutils. These changes can
|
|
|
|
|
also be implemented by package authors, but it would be better to
|
|
|
|
|
define a standard way of switching on the proposed behaviour.
|
|
|
|
|
|
2002-07-29 14:22:36 -04:00
|
|
|
|
|
2002-07-23 11:14:06 -04:00
|
|
|
|
Scope
|
|
|
|
|
|
|
|
|
|
Solution 1: Python 2.3 and up
|
|
|
|
|
Solution 2: all Python versions supported by distutils
|
|
|
|
|
|
2002-07-29 14:22:36 -04:00
|
|
|
|
|
2002-07-23 11:14:06 -04:00
|
|
|
|
Credits
|
|
|
|
|
|
|
|
|
|
None
|
|
|
|
|
|
2002-07-29 14:22:36 -04:00
|
|
|
|
|
2002-07-23 11:14:06 -04:00
|
|
|
|
References
|
|
|
|
|
|
|
|
|
|
None
|
|
|
|
|
|
2002-07-29 14:22:36 -04:00
|
|
|
|
|
2002-07-23 11:14:06 -04:00
|
|
|
|
Copyright
|
|
|
|
|
|
|
|
|
|
This document has been placed in the public domain.
|
|
|
|
|
|
2002-07-29 14:22:36 -04:00
|
|
|
|
|
2002-07-23 11:14:06 -04:00
|
|
|
|
|
|
|
|
|
Local Variables:
|
|
|
|
|
mode: indented-text
|
|
|
|
|
indent-tabs-mode: nil
|
2002-07-29 14:22:36 -04:00
|
|
|
|
sentence-end-double-space: t
|
|
|
|
|
fill-column: 70
|
2006-03-02 14:54:50 -05:00
|
|
|
|
coding: utf-8
|
2002-07-23 11:14:06 -04:00
|
|
|
|
End:
|