我正在创建一个包含多个图像处理块的Python项目,其中包含多级文件夹:
folder1
__init__.py
somecode1.py
folder11
__init__.py
somecode11.py
folder111
__init__.py
somecode111.py
folder12
__init__.py
somecode12.py
.......
folder2
__init__.py
somecode2.py
....
这使我能够非常轻松地启用这些模块,例如:
from folder1.somecode1 import XYZ1
from folder1.folder11.somecode11 import XYZ11
from folder1.folder11.folder111.somecode111 import XYZ111
有这么多 init .py会让我的项目文件太多
是否有可能:
(1)我的代码的这种文件夹结构
(2)能够按上述方式导入模块
在每个级别没有那么多 __ init __。py 的情况下执行上述操作?
为什么我要这个?
- 减少在我的git存储库中看到这么多文件的认知负担。
答案 0 :(得分:1)
任何带有__init__.py
文件的目录都被视为Python包。包中的不同模块以与普通模块类似的方式导入,但具有__init__.py
文件的特殊行为,该文件用于收集所有包范围的定义。
目录a.py
中的root/
将导入语句import root.a
。此语句将在root中查找__init__.py
文件,执行其所有顶级语句。接下来,它将查找名为root / a.py的文件并执行其所有顶级语句。在这些操作之后,a.py中定义的任何变量,函数或类都可以在root.a命名空间中使用。
有一种方便的语法可用于导入深层嵌套的包:import very.deep.module
作为示例。这允许您使用示例代替very.deep.module
的详细重复。