列出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

如何获取已导入Python模块的所有子模块的名称/列表?(不是外部导入的模块/包,而是与模块子文件夹位于同一文件夹中的模块/包)

我正在使用

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#这就是方法。