Improved example to just focus on sys.path manipulation.

This commit is contained in:
Eric V. Smith 2012-05-24 17:46:07 -04:00
parent f6bd2b6251
commit 3249f2d909
1 changed files with 14 additions and 8 deletions

View File

@ -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