获取没有外部模块的软件包成员

时间:2015-06-27 04:18:04

标签: python

我想在包中获取模块名称列表,但是当我运行此代码时:

import inspect

modules = inspect.getmembers(mypackage)

for m in modules:
    print(m[0])

我不仅得到“真正的”成员,还有mypackage本身,以及一些模块所依赖的外部包 - 例如,ElementTree(作为ET ,因为我更容易使用它,QueueProcess(这些来自multiprocessing)。

当然,我也会提供__builtins____docs__等内容,但这很容易根据下划线排除。

当我做的时候,我也发现了

import ElementTree as ET

在我的主脚本中,我可以通过两种不同的方式访问它 - 如ET本身,还有mymodule.ET。我觉得这很糟糕。

如何避免?

1 个答案:

答案 0 :(得分:0)

尝试使用这个,bar是你的包

import pkgutil

import bar

for _, name, ispkg in pkgutil.walk_packages(bar.__path__, "%s." % bar.__name__):
    if not ispkg:
        print(name)