7

有没有办法从解释器执行模块和函数文档字符串的关键字搜索?

通常,当我想用​​ Python 做某事时,我知道有一个模块可以做我想做的事情,但我不知道它叫什么。我想要一种搜索​​“执行 X 的函数或模块的名称”的方法,而无需使用 Google 搜索“python do X”

以“如何打开 URL”为例?在 Linux shell 中,我可能会尝试>> apropos open url. 在 MATLAB 下,我可能会尝试>> lookup open url. 这两个都会给我列出在其手册页或文档字符串中某处包含“open”和“URL”字样的函数或模块。例如:

urllib.urlopen   : Create a file-like object for the specified URL to read from.
urllib2.urlopen  : ...
...

我想要搜索所有已安装模块的东西,而不仅仅是已import编入当前会话的模块。

是的,谷歌是搜索 Python 文档字符串的好方法,但延迟有点高。;)

4

2 回答 2

7

对此的内置支持来自pydoc.apropos

import pydoc
pydoc.apropos('Zip')
# output: zipimport - zipimport provides support for importing Python modules from Zip archives.

如您所见,这几乎是无用的。每当无法导入模块时,它也会停止工作,这可能意味着“总是”,具体取决于您的包管理风格。

我没有使用但看起来很有希望的替代方法是apropos.py

Python 的深度、肮脏和详尽的“恰当”。爬取 system.path 中的所有库,并将查询字符串与所有模块名称以及顶级模块的类、函数和方法名称以及文档字符串进行匹配。

用法:./apropos.py

此模块是由于 PyDoc 的 apropos 方法的限制而创建的,当无法导入顶级模块之一时,该方法会严重失败。本机 apropos 方法也不会爬取该模块所做的文档字符串或深层模块名称。

于 2012-05-18T20:02:14.350 回答
1

使用以下命令:

pydoc -k
于 2012-06-09T11:42:34.117 回答