考虑到与下面的结构的目录:动态合并与目录模块文件模块在Python
├── foo
│ ├── bar
│ │ └── baz.py
│ └── bar.py
└── foo.py
和以下文件内容:
foo.pyclass Foo:
pass
富/酒吧.py
class Bar:
pass
富/酒吧/ baz.py
class Baz:
pass
我希望能够做所有这些事情从一些其他的文件:
from foo import Foo
from foo.bar import Bar
from foo.bar.baz import Baz
即仿佛在每个文件中的定义是“合并“模块定义包含具有相同名称的目录。我怎样才能以动态的方式完成这项工作(无论是否涉及到__init__.py
或其他),这不需要我手动指定每条路径?
当我把空__init__.py
文件在每个目录并尝试执行上述进口,我收到以下错误:
Traceback (most recent call last):
File "test.py", line 1, in <module>
from foo import Foo
ImportError: cannot import name 'Foo'
这似乎给我建议,foo.py
文件已被foo
覆盖目录,以便foo.py
中的定义不可见。
你的意思是你希望你能避免输入'foo.bar.baz'吗?在这种情况下,使用'__init __。py'文件是很容易的。 –
不,我完全按照所示键入输入。我已经更新了这个问题,当我尝试这样做时发生了错误。 –
当我说“以一种动态的方式,不需要我手动指定每个路径”时,我的意思是我不想更新'__init __。py'文件,例如,包括每个文件新的文件/目录我想要这种行为。 –