【发布时间】:2012-06-28 19:51:46
【问题描述】:
iPython 具有自动完成模块这一出色功能,并且在其中运行得非常好。
很长一段时间以来,我都有一个 shell 函数,它允许我将目录更改为给定模块所在的位置。它通过尝试从第一个参数导入模块的名称并查看其__file__ 来做到这一点。
我想做的是找出可用的可导入模块,这样我就可以为这个小助手编写一个自动完成功能。
我知道对于给定模块,我可以执行dir(module_name) 之类的操作,这将为我提供该模块所需的内容,但我不确定该怎么做才能找出可以导入的内容,就像 iPython 一样你做这样的事情:
import [TAB]
或者
import St[TAB]
这将自动完成所有以 St 开头的可导入模块。
我知道如何编写自动完成功能,我很感兴趣只是想知道我可以导入什么。
编辑:
通过挖掘 IPython 代码,我设法找到了为给定环境获取所有当前模块的确切部分:
from IPython.core.completerlib import module_completion
for module in module_completion('import '):
print module
我打印结果的原因是因为我实际上使用它来完成 ZSH,所以我需要处理输出。
【问题讨论】:
标签: python autocomplete ipython