我想在包中获取模块名称列表,但是当我运行此代码时:
import inspect
modules = inspect.getmembers(mypackage)
for m in modules:
print(m[0])
我不仅得到“真正的”成员,还有mypackage
本身,以及一些模块所依赖的外部包 - 例如,ElementTree
(作为ET
,因为我更容易使用它,Queue
或Process
(这些来自multiprocessing
)。
当然,我也会提供__builtins__
,__docs__
等内容,但这很容易根据下划线排除。
当我做的时候,我也发现了
import ElementTree as ET
在我的主脚本中,我可以通过两种不同的方式访问它 - 如ET
本身,还有mymodule.ET
。我觉得这很糟糕。
如何避免?
答案 0 :(得分:0)
尝试使用这个,bar是你的包
import pkgutil
import bar
for _, name, ispkg in pkgutil.walk_packages(bar.__path__, "%s." % bar.__name__):
if not ispkg:
print(name)