如何访问Python的help('modules')显示的模块列表?

5 投票
4 回答
1384 浏览
提问于 2025-04-17 09:57

我想知道如何获取Python的 help('modules') 显示的模块列表。它会显示以下内容:

>>> help('modules')

Please wait a moment while I gather a list of all available modules...

...[list of modules]...
MySQLdb             codeop              mailman_sf          spwd
OpenSSL             collections         markupbase          sqlite3
Queue               colorsys            marshal             sre
...[list of modules]...

Enter any module name to get more help.  Or, type "modules spam" to search
for modules whose descriptions contain the word "spam".

>>>

我可以在输出中看到这个列表,但我想在Python程序里以列表的形式访问它。我该怎么做呢?

4 个回答

1

这些命令只会列出那些不在标准库中的模块,但可能会很有用。

你可以使用这个命令:subprocess.call(pip freeze) 来查看当前安装的模块。

或者,你也可以用这个命令:subprocess.call(yolk -l) 来列出所有模块。

2

有不止一种方法。你可以试试:

import sys

mod_dict = sys.modules

for k,v in mod_dict.iteritems():
    print k,v
4

你可以自己模仿一下 help 的功能。内置的 help 是通过 pydoc 来实现的,而 pydoc 又使用了 ModuleScanner 这个类来获取所有可用库的信息——你可以在这个链接的第1873行找到相关内容:pydoc.py

下面是从这个链接中稍微修改过的代码:

>>> modules = []
>>> def callback(path, modname, desc, modules=modules):
    if modname and modname[-9:] == '.__init__':
        modname = modname[:-9] + ' (package)'
    if modname.find('.') < 0:
        modules.append(modname)

>>> def onerror(modname):
    callback(None, modname, None)

>>> from pydoc import ModuleScanner 
>>> ModuleScanner().run(callback, onerror=onerror)
>>> len(modules)
379
>>> modules[:10]
['__builtin__', '_ast', '_bisect', '_codecs', '_codecs_cn', '_codecs_hk', '_codecs_iso2022', '_codecs_jp', '_codecs_kr', '_codecs_tw']
>>> len(modules)
379

撰写回答