Python:确定导入是模块还是包

时间:2018-11-06 16:14:38

标签: python python-2.7 python-import

我正在尝试编写一些东西,该文件将扫描文件以进行导入,然后列出所有导入,同时指出哪些是软件包,哪些是模块

说我具有以下结构:

folder/
    foo.py
    bar.py
    p1/
        __init__.py
        m1.py
        p2/
            __init__.py
            m2.py

其中p1p2是程序包,而m1m2是模块。 foobar具有以下内容

#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

也许我做错了什么?

0 个答案:

没有答案