有没有办法从解释器执行模块和函数docstrings 的关键字搜索?
通常,当我想用Python做一些事情时,我知道有一个模块可以做我想要的,但我不知道它叫什么。我想要一种搜索“执行X的函数或模块的名称”的方法,而不必使用Google “python do X”。
以“我如何打开网址”为例?在Linux shell中,我可能会尝试>> apropos open url
。在MATLAB下,我可能会尝试>> lookup open url
。这两个都会给我列出在其手册页或doc字符串中包含“open”和“URL”字样的函数或模块。例如:
urllib.urlopen : Create a file-like object for the specified URL to read from.
urllib2.urlopen : ...
...
我想搜索所有已安装模块的内容,而不仅仅是import
进入当前会话的模块。
是的,Google是搜索Python文档字符串的好方法,但延迟有点高。 ;)
答案 0 :(得分:7)
内置支持来自pydoc.apropos
:
import pydoc
pydoc.apropos('Zip')
# output: zipimport - zipimport provides support for importing Python modules from Zip archives.
正如您所看到的,几乎没用。无论何时无法导入模块,它也会停止工作,这可能意味着“始终”,具体取决于您的包管理风格。
我没有使用但看起来很有希望的替代方案是apropos.py:
Python的深刻,肮脏和详尽的'apropos'。抓住所有人 system.path中的库,并匹配all的查询字符串 模块名称,以及类,函数和方法名称 顶级模块的文档字符串。
用法:./ apropos.py
这个模块是由于PyDoc的apropos方法的限制而创建的, 当其中一个顶级模块无法导入时,它会失败。 原生apropos方法也不会抓取文档字符串或深层 模块名称,这个模块。
答案 1 :(得分:1)
使用以下命令:
pydoc -k