列出python模块的子模块
如何获取已导入Python模块的所有子模块的名称/列表?(不是外部导入的模块/包,而是与模块子文件夹位于同一文件夹中的模块/包) 我正在使用列出python模块的子模块,python,module,Python,Module,如何获取已导入Python模块的所有子模块的名称/列表?(不是外部导入的模块/包,而是与模块子文件夹位于同一文件夹中的模块/包) 我正在使用 import inspect print([o[0] for o in inspect.getmembers(module_imported) if inspect.ismodule(o[1])]) 但这也会打印导入的系统模块和主模块文件夹中的文件。如何在模块上使用dir来获得列出的所有子模块或属性 In [1]: import requests In
import inspect
print([o[0] for o in inspect.getmembers(module_imported) if inspect.ismodule(o[1])])
但这也会打印导入的系统模块和主模块文件夹中的文件。如何在模块上使用
dir
来获得列出的所有子模块或属性
In [1]: import requests
In [2]: dir(requests)
Out[2]:
['ConnectTimeout',
'ConnectionError',
'DependencyWarning',
'FileModeWarning',
'HTTPError',
'NullHandler',
'PreparedRequest',
'ReadTimeout',
'Request',
'RequestException',
'Response',
'Session',
'Timeout',
'TooManyRedirects',
'URLRequired',
'__author__',
'__build__',
'__builtins__',
'__cached__',
'__copyright__',
'__doc__',
'__file__',
'__license__',
'__loader__',
'__name__',
'__package__',
'__path__',
'__spec__',
'__title__',
'__version__',
'adapters',
'api',
'auth',
'certs',
'codes',
'compat',
'cookies',
'delete',
'exceptions',
'get',
'head',
'hooks',
'logging',
'models',
'options',
'packages',
'patch',
'post',
'put',
'request',
'session',
'sessions',
'status_codes',
'structures',
'utils',
'warnings']
使用pkgutil,尽管它并不总是与pyinstaller一起工作
pkgutil.iter_modules(imported_module.__path__))
您可以使用
getmembers
方法的谓词
参数。它的作用类似于过滤器。
在这种情况下,它将是:
inspect.getmembers(module_imported, inspect.ismodule)
这是GraphicalDot答案的可粘贴副本。只需将my_imported_模块更改为要检查的模块即可
from pkgutil import iter_modules
def list_submodules(module):
for submodule in iter_modules(module.__path__):
print(submodule.name)
list_submodules(my_imported_module)
导入一个包不会自动导入子模块这是一个相当简单的问题(我不明白为什么谷歌不会产生很多点击率)。请发布您迄今为止的尝试,以及您在哪里遇到的问题。查看或询问更多相关详细信息。我使用的是
导入检查打印([o[0]表示o in inspect.getmembers(module_imported)if inspect.ismodule(o[1]))
,但此打印还包括导入的系统模块和主模块文件夹中的文件。好的,请将该信息添加到问题中,因为它可能很有价值。是@wim,我知道子模块不是自动导入的。但是,导入一个(这里不重要)导入子模块的模块,如何区别Python包的本地模块?我发布的代码没有这种区别。dir()
“试图产生最相关的信息,而不是完整的信息”。就我个人而言,我收到了不一致的返回值。来源:docs.python.org/library/functions.html#这就是方法。