Ich benutze Python 3.5.1. Ich habe das Dokument und den Paketabschnitt hier gelesen: https://docs.python.org/3/tutorial/modules.html#packages
Jetzt habe ich folgende Struktur:
/home/wujek/Playground/a/b/module.py
module.py
::
class Foo:
def __init__(self):
print('initializing Foo')
Jetzt, während in /home/wujek/Playground
:
~/Playground $ python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x100a8f0b8>
In ähnlicher Weise, jetzt zu Hause, Superordner von Playground
:
~ $ PYTHONPATH=Playground python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x10a5fee10>
Eigentlich kann ich alles Mögliche machen:
~ $ PYTHONPATH=Playground python3
>>> import a
>>> import a.b
>>> import Playground.a.b
Warum funktioniert das? Ich obwohl es erforderlich sein , __init__.py
Dateien in beide (leeren funktionieren würde) a
und b
für module.py
importierbar zu sein , wenn die Python - Pfad verweist auf den Playground
Ordner?
Dies scheint sich gegenüber Python 2.7 geändert zu haben:
~ $ PYTHONPATH=Playground python
>>> import a
ImportError: No module named a
>>> import a.b
ImportError: No module named a.b
>>> import a.b.module
ImportError: No module named a.b.module
Mit __init__.py
in beiden ~/Playground/a
und ~/Playground/a/b
es funktioniert gut.