如果某些目录没有该文件,在 Python 代码库的子目录中添加“__init__.py”有什么缺点?

问题描述

自 Python 3.3 起,取消了在源代码的每个目录中都包含 __init__.py 的强制要求。我的目标是使用 pyclbr 读取给定源代码的所有模块和子模块。但是,在某些情况下,特定模块是其他模块的子模块,并且并非所有父模块都是包。 pyclbr 不明白目录和包之间的区别。

所以,虽然attempting to solve this problem,我想在每个不是包的目录中添加__init__.py文件。我不确定有什么缺点。我对偏离 Python 社区设定的标准有这种抑制,这可能会在以后的某个时候导致错误

如上面的超链接所述,我可以只指定模块并将其完整路径提供给 pyclbr,但这在以下源代码结构的情况下不起作用:

(gruml) ➜  gruml git:(run-sequence-diagram) ✗ tree a
a
└── a
    └── a
        ├── __init__.py
        └── a.py

2 directories,2 files

这不起作用,因为将 a 发送到 pyclbr 会为 a.a.aa.a.a.a 返回相同的数据。因此,我必须发送完整模块路径并为目录工作。

解决方法

将为 a.a.aa.a.a.a 返回相同的数据

由于我不熟悉 pyclbr,因此不清楚您指的是什么数据,但是如果您只想要特定于 a.a.a 的某些内容,则需要将其写入初始化文件