我想将子文件夹作为模块导入。因此,每个子文件夹都包含一个__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
文件。 - Aziz Alto__init__.py
文件可能能够起到作用。 - cerebrouFoo1
在父目录中,而现在想要编写类似于from Foo1 import *
的代码,语法应该怎么写呢?有没有一种方法可以实现相同的效果,而不必在每个变量前都加上Foo1
前缀呢? - jxramosfrom .dirfoo1.foo1 import Foo1
等对我很有效。此外,我没有使用空的双下划线 init 文件,而是加入了这两行代码:import site
还有site.addsitedir('./')
。 - brethvoice__init__.py
(请参见https://dev59.com/71oU5IYBdhLWcg3wxIyA#37140173)。 - scai