首页 文章

使用ipython在pycharm中获得REAL代码完成

提问于
浏览
11

许多python IDE都提供代码完成(代码洞察),PyCharm就是其中一个IDE . 但是,在我看来,提供的代码完成非常有限 . 让我举个例子说清楚:

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

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

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

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

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

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

IPython救援..(也许?)

现在,如果我们在linux-terminal中启动IPython并输入第一段代码,我们将能够一直获得代码完成,即使是变量'm' . (通过按TAB而不是CTRL空格来实现IPython中的代码完成)

我没有听说过有关IPython不断在循环中执行代码的事情或类似的事情......

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

Is there a way to setup PyCharm to use IPython for code-completion?

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

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

我的设置

  • 操作系统:Debian测试

  • python:Python3和IPython3

  • IDE:Pycharm 3.0.2专业版

3 回答

  • 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)
    
  • 1

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

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

    • 通过单击Tools,Run Python console,从控制台启动python命令行(不运行调试器)

  • 2

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

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

相关问题