Python docstring搜索 - 类似于MATLAB`lookup`或Linux`apropos`

Li-*_*Yip 7 python

有没有办法从解释器执行模块和函数docstrings的关键字搜索

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

以"如何打开URL"为例?在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  : ...
...
Run Code Online (Sandbox Code Playgroud)

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

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

Try*_*yPy 7

内置的支持来自pydoc.apropos:

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

如你所见,这几乎是无用的.无论何时无法导入模块,它也会停止工作,这可能意味着"始终",具体取决于您的包管理方式.

我没有使用但看起来很有希望的另一种选择是apropos.py:

Python的深刻,肮脏和详尽的'apropos'.对system.path中的所有库进行爬网,并将查询字符串与所有模块名称以及顶级模块的类,函数和方法名称以及文档字符串进行匹配.

用法:./ apropos.py

这个模块是由于PyDoc的apropos方法的限制而创建的,当其中一个顶级模块无法导入时,该方法很难实现.本机apropos方法也不会对此模块执行的文档字符串或深层模块名称进行爬网.