Я хочу импортировать подпапки в качестве модулей. Поэтому каждая подпапка содержит __init__.py
. Моя структура папок, как это:Импорт модуля из подпапки
src\
main.py
dirFoo\
__init__.py
foofactory.py
dirFoo1\
__init__.py
foo1.py
dirFoo2\
__init__.py
foo2.py
В моем основном сценарии я импортировать
from dirFoo.foofactory import FooFactory
В заводском файле я включать вложенные модули:
from dirFoo1.foo1 import Foo1
from dirFoo2.foo2 import Foo2
Если я называю мой FooFactory я получить ошибку, что python не может импортировать подмодули foo1 и 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
Одна вещь, чтобы помнить! добавьте '__init __. py' в каждую подпапку, с которой вы импортируете. –
Пустой '__init __. Py' может выполнить эту работу. – cerebrou
Что будет синтаксис, если ранее 'Foo1' был в родительском каталоге и один закодировал что-то вроде' from Foo1 import * '. Есть ли способ достичь такого же эффекта, поэтому вам не нужно приписывать все «Foo1»? – jxramos