问题描述
自 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.a
和 a.a.a.a
返回相同的数据。因此,我必须发送完整模块路径并为目录工作。
解决方法
将为 a.a.a
和 a.a.a.a
返回相同的数据
由于我不熟悉 pyclbr
,因此不清楚您指的是什么数据,但是如果您只想要特定于 a.a.a
的某些内容,则需要将其写入初始化文件