从python中的包中获取模块名称

时间:2017-07-06 18:39:20

标签: python python-2.6

让我们说我有一个python包,我想列出这个包中的所有模块。即。

>>> import my_package
>>> import inspect
>>> inspect.getmembers(my_package, inspect.ismodule)
>>> []

出于某种原因,我得到一个空列表。现在,如果我从包中手动加载模块,那么:

>>> import my_package.module_a
>>> inspect.getmembers(my_package, inspect.ismodule)
>>> ['module_a, <module '....'>]

假设我有多个模块并且我不想逐个加载它们,还有其他方法吗? (p.s. from my_package import *无法工作)。

此外,你知道造成这种行为的原因是什么吗?是否与名称空间有关?

P.S包未在本地安装,我从服务器加载所有内容。

1 个答案:

答案 0 :(得分:1)

确实无法获得包名称空间中可能存在的每个可能模块的方法。你可以在包目录中搜索子包目录和模块文件,但是没有什么可以阻止一些代码来创建一个types.ModuleType对象并将它附加到顶层包。如果您正在处理的包是命名空间包,则可能有任意数量的模块和子包位于磁盘上的不同位置。