【问题标题】:Python and IntellisensePython 和智能感知
【发布时间】:2010-10-28 15:32:13
【问题描述】:

对于 Python 是否有等效于“智能感知”的功能?

也许我不应该承认这一点,但我发现智能感知确实加快了学习新语言的“发现阶段”。例如,由于 sn-ps 和 intellisense 帮助我,从 VB.net 切换到 C# 轻而易举。

【问题讨论】:

标签: python ide intellisense


【解决方案1】:

This 博客文章解释了将 Vim 设置为 Python IDE,他介绍了类似 Intellisense 的功能:


(来源:dispatched.ch

这是 Vim 7 中的标准。在 Vim 中还有许多其他非常有用的 Python 开发插件,例如 Pyflakes 即时检查代码和 Python_fn.vim 提供操作 Python 缩进和代码块的功能.

【讨论】:

【解决方案2】:

看看python tools for visual studio,它们提供代码完成(也称为智能感知)、调试等...

下面是 python 交互式 shell 的屏幕截图,显示了代码完成。

【讨论】:

  • 请记住智能感知不仅仅是代码完成,它是一个通用术语,当您将鼠标悬停在函数或变量上时,它也适用于工具提示,也就是代码洞察,可以看到在突出显示的compile 方法的右侧。这是几乎所有 Python IDE 都不能正确完成的事情,如果 Eclipse 只能接近,但它不会向您显示变量可以保存的类型,或者函数可以获取/返回。 (屏幕截图中的 RE_Pattern)
【解决方案3】:

Eclipse 的PyDev 环境具有类似智能感知的Python 功能。保持交互式控制台打开以及 help(item) 函数非常有用。

【讨论】:

  • 与我尝试过的其他 Python“IDE”不同,它甚至可以正确地获得 C 扩展(至少 PyQt4)。
【解决方案4】:

语言的动态特性往往使自动完成类型分析变得困难,因此上述各种完成设施的质量差异很大。

虽然它不完全符合您的要求,但 ipython shell 非常适合探索性工作。当我使用一个新模块时,我倾向于将它拉入 ipython 并戳它。在尝试了上面提到的大多数解决方案之后(尽管 Wing 已经有好几年了),ipython 的完成设施始终更加可靠。探索的两个主要工具是选项卡完成和在模块/函数名称后附加一个问号以获取帮助文本,例如:

In [1]: import sqlalchemy

In [2]: sqlalchemy.s #tab completion
sqlalchemy.schema    sqlalchemy.select    sqlalchemy.sql       sqlalchemy.subquery

In [2]: sqlalchemy.select? #Shows docstring

In [3]: sqlalchemy.select?? #Shows method source

In [4]: edit sqlalchemy.select #opens the source in an editor

【讨论】:

    【解决方案5】:

    Python 附带的IDLE editor 具有智能感知功能,可以自动发现导入的模块、函数、类和属性。

    【讨论】:

    • 或者您可以使用dir(object) 来获取相同的属性列表。但它与我习惯的信息丰富的智能感知相去甚远。
    【解决方案6】:

    我强烈推荐PyDev。在 Pydev 中,您可以将正在使用的模块放在 Forced Buildins 中,大多数情况下代码完成将比在其他 IDE(如 KOMODO EDIT)中更好地工作。

    我也认为IPython 很有帮助。由于它是 IPython 中的“运行时”,因此 IPython 中的代码完成不会遗漏任何内容。

    【讨论】:

    • 我不建议使用 PyDev。我已经在 Django 上进行了一些尝试,并且在涉及 Akismet 或 Markdown 等插件时有很多未解决的依赖项。我尝试了很多解决方案,但最终都没有奏效。我听说过很多关于 PyCharm 的好消息,但没有亲自尝试过。
    • @Wojtek,你有其他 IDE 推荐吗?我尝试过 PyDev、Sublime 和 Komodo Edit,Komodo 非常好,因为与 Eclipse 相比它是轻量级的,但我在设置或理解它的智能感知工作方式时遇到了一些麻烦......
    • @Tareck117 不,我不是真正的 Python 专家,我只是偶尔快速尝试一下。我使用 Sublime,但仅用于单文件脚本,它本身不是 IDE。正如我所说,我可以推荐 PyCharm,我的一些 pythonist 朋友使用它并且喜欢它。我听说它最近免费(社区版)具有一些有限的功能,但可以正常工作的智能感知。你应该试一试。这是一种商业产品,所以我认为它们可以正常工作,但不能保证。
    • VS2010(不能使用更高版本)和 Python 工具是我用过的最好的智能感知工具,Eclipse/PyDev 没有提供那么多信息。
    【解决方案7】:

    PyCharm 是支持 IntelliSense 的最佳 Python IDE。

    【讨论】:

    • 值得一提的是它不支持动态模块的IntelliSense
    【解决方案8】:

    我推荐Komodo Edit。但是,我应该指出一些事情:你不会得到任何像你习惯使用 Visual Studio 的 C# 智能感知那样好的东西。 Python 的动态特性使得实现这些功能变得很困难。

    【讨论】:

      【解决方案9】:

      例如,Wingware 实现了自动补全,参见http://wingware.com/doc/edit/auto-completion

      【讨论】:

        【解决方案10】:

        ctags + vim 也可以,虽然它没有智能感知那么强大。将它与 ipython 一起使用,您可以获得在线帮助、自动名称完成等……但这显然是面向命令行的。

        Eclipse + pydev 也可以,但是我没有经验:http://pydev.sourceforge.net/

        【讨论】:

          【解决方案11】:

          嗯,我认为学习 Python 最有活力的方法是使用 iPython

          您在使用选项卡时获得了自动补全,动态行为,因为它是一个外壳,您可以获得任何对象/方法类型的完整文档:

          object.method ?
          

          在开发时,我同意 PyDev 很酷。但是它很重,所以在学习的时候,一个文本编辑器+iPython真的很不错。

          【讨论】:

            【解决方案12】:

            Pyscripter 拥有我见过的最好的智能感知 :)

            【讨论】:

            • pyscripter 中没有智能感知。它只有基本的自动完成功能。
            • 你真的需要使用 Visual Studio mate,PyScripter 是我用过的最糟糕的高端 IDE 之一。
            • 此时我建议使用 Pycharm。它变得非常好。
            【解决方案13】:

            对于 emacs 和 VI,还有 https://github.com/tkf/emacs-jedi

            【讨论】:

              【解决方案14】:

              我会推荐jedi-vim,它对我来说很完美,试试吧,你不会后悔的。

              【讨论】:

                【解决方案15】:

                IronPython 是要走的路。 Visual Studio 具有最好的智能感知支持,您可以使用 IronPython 来利用它

                【讨论】:

                • 我建议只使用普通 python,.NET 非常糟糕......但同意 VS 具有最好的智能感知。
                【解决方案16】:

                试试 Visual Studio Code。它具有非常强大的 Python 和 Django 支持,以及用于 Python 项目中使用的其他语言的数千个插件,例如 CSS、HTML 和 Django 模板。

                最重要的是,它是免费的: https://code.visualstudio.com

                【讨论】: