Merge from upstream.

This commit is contained in:
Carl Meyer 2012-05-25 09:13:31 -06:00
commit ecdcf84254
2 changed files with 18 additions and 11 deletions

View File

@ -9,7 +9,8 @@ Type: Standards Track
Content-Type: text/x-rst
Created: 13-Jun-2011
Python-Version: 3.3
Post-History: 24-Oct-2011, 28-Oct-2011, 06-Mar-2012
Post-History: 24-Oct-2011, 28-Oct-2011, 06-Mar-2012, 24-May-2012
Resolution: http://mail.python.org/pipermail/python-dev/2012-May/119668.html
Abstract

View File

@ -4,12 +4,12 @@ Version: $Revision$
Last-Modified: $Date$
Author: Eric V. Smith <eric@trueblade.com>
Status: Accepted
Resolution: http://mail.python.org/pipermail/python-dev/2012-May/119651.html
Type: Standards Track
Content-Type: text/x-rst
Created: 19-Apr-2012
Python-Version: 3.3
Post-History:
Resolution: http://mail.python.org/pipermail/python-dev/2012-May/119651.html
Abstract
========
@ -372,9 +372,11 @@ portion::
child
three.py
We add the first two parent paths to ``sys.path``. The third
``parent`` portion is added dynamically to ``parent.__path__``, and
the third portion is then found when it is imported::
We add ``project1`` and ``project2`` to ``sys.path``, then import
``parent.child.one`` and ``parent.child.two``. Then we add the
``project3`` to ``sys.path`` and when ``parent.child.three`` is
imported, ``project3/parent`` is automatically added to
``parent.__path__``::
# add the first two parent paths to sys.path
>>> import sys
@ -400,17 +402,21 @@ the third portion is then found when it is imported::
File "<frozen importlib._bootstrap>", line 1250, in _find_and_load_unlocked
ImportError: No module named 'parent.child.three'
# now add the third parent portion to parent.__path__:
>>> parent.__path__.append('Lib/test/namespace_pkgs/project3/parent')
>>> parent.__path__
_NamespacePath(['Lib/test/namespace_pkgs/project1/parent', 'Lib/test/namespace_pkgs/project2/parent', 'Lib/test/namespace_pkgs/project3/parent'])
# now add project3 to sys.path:
>>> sys.path.append('Lib/test/namespace_pkgs/project3')
# and now parent.child.three can be imported:
>>> import parent.child.three
# and project3/parent/child has dynamically been added to parent.child.__path__
# project3/parent has been added to parent.__path__:
>>> parent.__path__
_NamespacePath(['Lib/test/namespace_pkgs/project1/parent', 'Lib/test/namespace_pkgs/project2/parent', 'Lib/test/namespace_pkgs/project3/parent'])
# and project3/parent/child has been added to parent.child.__path__
>>> parent.child.__path__
_NamespacePath(['Lib/test/namespace_pkgs/project1/parent/child', 'Lib/test/namespace_pkgs/project2/parent/child', 'Lib/test/namespace_pkgs/project3/parent/child'])
>>>
Discussion
@ -446,7 +452,7 @@ They are:
4. Implicit package directories will permanently entrench current
newbie-hostile behavior in ``__main__``.
Nick later gave a detailed response to his own objections[5]_, which
Nick later gave a detailed response to his own objections [5]_, which
is summarized here:
1. The practicality of this PEP wins over other proposals and the