我正在尝试编写一些东西,该文件将扫描文件以进行导入,然后列出所有导入,同时指出哪些是软件包,哪些是模块
说我具有以下结构:
folder/
foo.py
bar.py
p1/
__init__.py
m1.py
p2/
__init__.py
m2.py
其中p1
和p2
是程序包,而m1
,m2
是模块。
foo
和bar
具有以下内容
#foo.py
import p1
和
#bar.py
import p1.m1
import p1.p2
我需要的输出类似于:
foo: p1 (package)
bar: p1.m1 (module), p1.p2 (package)
如果可能的话,我还想知道导入文件的位置以及它们所属的软件包(例如m1
是软件包p1
和{{ 1}}是m2
)
我已经设法使用p1.p2
模块来扫描导入,但是我真的很难获取有关导入的任何信息。
我尝试使用ast
,但似乎不适用于子包。这是我尝试过的
pkgutil
也许我做错了什么?