假设我有一个python包,我想列出这个包中的所有模块。i、 e
>>> 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包不是本地安装的,我正在从服务器加载所有内容。你知道吗
实际上,并没有一种可靠的方法可以获得包命名空间中可能存在的所有模块。您可以在包目录中搜索子包目录和模块文件,但是没有什么可以阻止一些代码仅仅创建一个
types.ModuleType
对象并将其附加到顶部包。如果您要处理的包是一个命名空间包,那么磁盘上的不同位置可能有任意数量的模块和子包。你知道吗相关问题 更多 >
编程相关推荐