Chcę zaimportować podfoldery jako moduły. Dlatego każdy podfolder zawiera __init__.py
. Moja struktura folderów jest tak:Moduł importu z podfolderu
src\
main.py
dirFoo\
__init__.py
foofactory.py
dirFoo1\
__init__.py
foo1.py
dirFoo2\
__init__.py
foo2.py
W moim głównym skrypcie importować
from dirFoo.foofactory import FooFactory
W tym pliku fabrycznego I obejmuje moduły podrzędne:
from dirFoo1.foo1 import Foo1
from dirFoo2.foo2 import Foo2
Jeśli zgłoszę mój foofactory I uzyskać błąd, że python nie może zaimportować submodułów foo1 i foo2:
Traceback (most recent call last):
File "/Users/tmp/src/main.py", line 1, in <module>
from dirFoo.foofactory import FooFactory
File "/Users/tmp/src/dirFoo/foofactory.py", line 1, in <module>
from dirFoo1.foo1 import Foo1
ImportError: No module named dirFoo1.foo1
Jedna rzecz do zapamiętania! dodaj '__init __. py' do każdego podfolderu, z którego importujesz. –
Puste '__init __. Py' może wykonać zadanie. – cerebrou
Jaka byłaby składnia, jeśli poprzednio 'Foo1' znajdował się w katalogu nadrzędnym, a jeden kodował coś podobnego' 'z importu Foo1 *'. Czy istnieje sposób na osiągnięcie tego samego efektu, więc nie trzeba poprzedzać wszystkiego 'Foo1'? – jxramos