【问题标题】:Finding out importable modules in Python在 Python 中找出可导入的模块
【发布时间】: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


    【解决方案1】:

    作为起点,您可以遍历sys.path 中的路径以查找python 模块,这正是import 所做的。除此之外,Python 不会为所有模块提供索引或其他内容,因为导入在运行时被请求时解析。不过,您可以轻松地为内置模块提供索引,并且可能为以前导入的模块提供缓存或其他东西。

    【讨论】:

      猜你喜欢
      • 2020-03-20
      • 2021-10-20
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 2015-05-03
      相关资源
      最近更新 更多