gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:02:20 28 4
gpt4 key购买 nike

假设我有一个 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 '....'>]

假设我有多个模块,并且我不想一一加载它们,还有其他方法吗? (附:from my_package import * 不起作用)。

此外,您知道是什么导致了这种行为吗?与命名空间有什么关系吗?

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

最佳答案

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

关于python - 从 python 中的包中获取模块名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44956614/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com