【问题标题】:use ipython to get REAL code-completion in pycharm使用 ipython 在 pycharm 中获得真正的代码完成
【发布时间】:2014-01-31 17:28:52
【问题描述】:

许多 python IDE 都以提供代码完成(代码洞察力)而自豪,PyCharm 就是其中之一。但是,在我看来,提供的代码完成功能非常有限。让我举个例子来说明:

import numpy as np
m = np.random.random((3,5))
m.

在 'm.' 之后按 CTRL-空格键不会给我任何代码完成,-无论我多么努力;)..我想这是因为 IDE 必须进行类型推断才能知道变量“m”的类型,而这不是t 在动态编程语言领域中微不足道。

现在,PyCharm 带有一个名为“收集运行时类型信息以获取代码洞察力”的设置,这听起来确实很有希望。但是,它似乎并没有解决上面提到的问题。我仍然无法完成变量“m”的代码完成。

到目前为止,我只找到了一种方法来完成 PyCharm 中变量的代码:

import numpy as np
m = np.random.random((3,5))
''':type : np.matrix'''
m.

在这个例子中,我可以在“m.”之后按 CTRL-空格键来完成代码,这是因为我通过使用文档字符串指定变量的类型来帮助 IDE。然而,我对这种获取代码完成的方式并不满意,因为它为所有这些文档字符串的代码添加了不必要的冗长(更不用说所有额外的键盘输入)......

IPython 来救援..(也许?)

现在,如果我们在 linux 终端中启动 IPython,并输入第一段代码,我们将能够一直完成代码,即使对于变量“m”也是如此。 (IPython 中的代码补全是通过按 TAB 而不是 CTRL 空格来实现的)..

我对 IPython 没有太多经验,但我相信我听说过一些关于 IPython 不断在循环中执行代码或类似的事情......

我在想应该可以使用 IPython 在 PyCharm 的编辑器中实现所有变量的 REAL 代码完成......

有没有办法设置 PyCharm 使用 IPython 完成代码?

请注意,我不满意将代码发送到终端窗口/控制台或类似的东西,我希望在 PyCharm 的编辑器中完成代码...

我看过像Adding ipython as an interpreter in Pycharm Ubuntu 这样的问题,但它似乎是关于在控制台中使用 IPython,而不是在编辑器中......还有很多关于 IDE 中的代码完成的问题,但他们所有的代码完成度似乎都与 PyCharm 一样令人不满意......

我的设置

  • 操作系统:Debian 测试
  • python:Python3 和 IPython3
  • IDE:Pycharm 3.0.2 专业版

【问题讨论】:

  • 我认为问题在于 IPython 是某种 python 解释器,而 PyCharm(与许多其他 IDE 一样)只是某种(非常goog!)文本编辑器。简而言之,一个在您键入时执行代码,另一个编辑稍后您运行的脚本
  • 但我不明白为什么 PyCharm 编辑器不能(以某种方式)咨询 IPython 以使真正的代码完成成为可能......我猜 pycharm 会运行得更慢, - 但我认为这是可以接受的。

标签: python python-3.x ipython pycharm code-completion


【解决方案1】:

它无法分辨函数的返回值(没有实际运行脚本,这就是为什么 ipython 知道它是什么(它实际上已经运行了代码并收到了一个它可以自省的对象)

如果您希望代码完成而不必实际执行脚本直到您输入文本的位置,您必须执行额外的步骤

import numpy as np
m = np.random.random((3,5))
assert isinstance(m,np.ndarray)
m. #now you get code completion (since the IDE now knows the class of m, without having to execute your script)

【讨论】:

  • 遗憾的是,这给代码增加了与在文档字符串中定义类型相同的冗长程度。
  • 不幸的是,这就是它的工作方式......一个ide不是解释器:/......它不执行你的代码,所以如果它们没有被明确地创建为一个类(例如x=numpy.ndarray([1,2,3])
【解决方案2】:

我有同样的问题,我在这里找到了答案: https://www.jetbrains.com/pycharm/help/using-ipython-notebook-with-pycharm.html

您需要做的是在项目工具窗口中创建一个 ipython 笔记本。这是一个扩展名为“.ipynb”的文件。右键单击要放置文件的目录,选择“新建-->文件”,在对话框中输入文件名并提供文件扩展名.ipynb。打开笔记本文件,当您开始在窗口中键入内容时,会出现一个下拉窗口,其中包含命名空间中的对象以及以已键入字母开头的所有命令。

【讨论】:

    【解决方案3】:

    要在 pycharm 中实现类似 iPython 的功能,您可以通过两种方式实现:

    1. 设置断点并调试您的代码。当它到达断点时,转到编辑器正下方的控制台选项卡,然后单击“show command line”按钮启动命令行

    2. 从控制台启动 python 命令行(不运行调试器),点击工具,运行 Python 控制台

    【讨论】:

      猜你喜欢
      • 2017-04-30
      • 2015-05-27
      • 2017-11-07
      • 2014-08-26
      • 1970-01-01
      • 2015-01-15
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多