如何访问Python的help('modules')显示的模块列表?
我想知道如何获取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