在PyCharm中运行Program后显示Interpreter(IPython)时出现的问题

时间:2015-09-16 15:58:39

标签: python ide ipython pycharm pydev

我已将PyCharm专业版 3.5 5.0配置为

  

尽可能使用IPython

在我的运行/调试配置中设置

  之后

显示口译员

我经常使用交互式解释器,我非常喜欢IPython,但是有一些事情我不喜欢在PyCharm中处理它的方式:

  • 我程序中的任何input()都会返回空字符串。

  • 此外,当发生错误时,我无法再与该程序进行交互。 (您可以在运行带有-i标志的Python程序时使用

  • 控制台的最后一行与当前行之间有很多空格

在IPython中,代码块中的...:提示符不会缩进2个空格,因此不会与In [?]:提示符对齐。

  • 发生错误时,我会得到类似的结果 Traceback (most recent call last): File "C:\Program Files (x86)\PyCharm\helpers\pydev\pydev_run_in_console.py", line 69, in <module> globals = run_file(file, None, None) File "C:\Program Files (x86)\PyCharm\helpers\pydev\pydev_run_in_console.py", line 29, in run_file pydev_imports.execfile(file, globals, locals) # execute the script File "C:\Program Files (x86)\PyCharm\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile exec(compile(contents+"\n", file, 'exec'), glob, loc) File "C:/Users/ca/Python/Bundeswettbewerb Informatik/Aufgabe2/Ameisen.py", line 133, in <module> function_that_caused_error() 我不需要/想要从内部看到追溯。

  • 当运行文件时,需要启动IPython,这需要几秒钟,即使我之后没有使用解释。我希望PyCharm在程序结束或我开始调试后启动IPython(你可以通过import IPython; IPython.start_ipython()

  • 在交互式控制台中启动IPython

还有其他一些我不喜欢的小事

  • 启动IPython后,它会向控制台输出大量文本。除了版本号之外,我不想看到任何其他内容(您通常可以使用--no-banner选项执行此操作,但将其添加到解释器选项中并不起作用)

  • 当您输入内容并按Up时,它会替换我在历史记录的最后一项中所写的内容,而不是将我的历史记录的最后一项替换为我输入的内容。普通的IPython就是这样做的。

  • 我希望自动代码完成,而无需在控制台中按Ctrl + Space

&#34;问题&#34;按重要性排序。有谁知道如何更改其中一些?我可以停止使用IPython来解决第二个,第三个和第四个问题,但其他问题仍然存在。所有这些行为(不包括IPython的东西)都在PyScripter中很好地实现了。

编辑:

我找到了前两个问题的解决方案以及IPython横幅的问题。 PyDev交互式解释器(由PyCharm使用)的源位于Windows上,位于C:\Program Files (x86)\PyCharm\helpers\PyDev(当然,路径不同)。

因此,编辑文件_pydev_imps/_pydev_execfile.py可以解决第一个问题。在exec(compile(contents+"\n", file, 'exec'), glob, loc)块中包装第18行(try ... except),并使用以下代码作为异常处理程序import traceback; traceback.print_exc()。如果出现错误,这将终止您的Python程序,同时让您在之后与变量进行交互。

问题2可以通过编辑火pydev_run_in_console.py来解决。在文件开头添加此导入:from pydev_console_utils import StdIn并在添加导入之前在第61行之后插入sys.stdin = StdIn(interpreter, host, client_port)

为了解决横幅问题,您必须下载最新版本的PyDev源here,并将文件pydev_ipython_consolepydev_ipython_console_011替换为新版本。在第一个文件的较新版本中,第22行中的__init__方法有一个名为show_banner的参数,其默认值为True。将其更改为False

2 个答案:

答案 0 :(得分:1)

这可能不是您要寻找的答案,但是基于我在InteliJ产品(IPythonPyCharm)上使用Ultimate的经验,我不建议使用其IPython版本。它充满了过时的错误,您将浪费宝贵的时间来解决问题,而不是去编码。

您尝试过jupyter notebook吗?如果您将pythonanaconda一起安装,则说明它已经安装。要运行它,请打开终端并输入:

jupyter notebook

如果您的浏览器无法自动打开,请转到http://localhost:8888


注意:

您可以通过创建batsh脚本来自动执行此过程,该脚本包含位于项目目录内上方的代码,这样就不会在您的主目录中启动,默认情况下。


资源:

答案 1 :(得分:0)

老实说,您是否只是尝试运行较新版本的PyCharm并导入设置? 3.5已经过时了(我自己4.5.3,最新版本是5.0)我相信在新版本中为IPython提供了更多支持。 https://www.jetbrains.com/pycharm/help/ipython.html。特别是如果你是一名学生,那么试一试就不会有什么坏处。我知道PyCharm的旧版本比最近发布的版本更加错误。