从python包中获取模块名称

2024-04-18 21:28:22 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个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包不是本地安装的,我正在从服务器加载所有内容。你知道吗


Tags: 模块方法fromimport名称packagemy空间
1条回答
网友
1楼 · 发布于 2024-04-18 21:28:22

实际上,并没有一种可靠的方法可以获得包命名空间中可能存在的所有模块。您可以在包目录中搜索子包目录和模块文件,但是没有什么可以阻止一些代码仅仅创建一个types.ModuleType对象并将其附加到顶部包。如果您要处理的包是一个命名空间包,那么磁盘上的不同位置可能有任意数量的模块和子包。你知道吗

相关问题 更多 >