草庐IT

python - 在 PyCharm 中运行程序后显示解释器 (IPython) 时出现问题

coder 2023-05-24 原文

我将 PyCharm 专业版 3.5 5.0 配置为

use IPython when possible

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

show interpreter afterwards

我经常使用交互式解释器,我真的很喜欢 IPython,但我不喜欢 PyCharm 中的处理方式:

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

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

  • Console中的最后一行和当前行之间有很大的空格

在 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 即可自动完成代码

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

编辑:

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

所以第一个问题可以通过编辑文件_pydev_imps/_pydev_execfile.py来解决。将第 18 行 (exec(compile(contents+"\n", file, 'exec'), glob, loc)) 包装在 try ... except block 中以下代码作为异常处理程序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

最佳答案

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

你试过 jupyter notebook 吗?如果您使用 anaconda 安装了 python,那么它已经安装好了。要运行它,请打开终端并输入:

jupyter notebook

如果您的浏览器没有自动打开,请前往 http://localhost:8888


注意:

您可以通过创建包含上述代码的 batsh 脚本在您的项目目录中来自动执行此过程,这样它就不会从您的主目录开始,默认情况下会这样做。


资源:

关于python - 在 PyCharm 中运行程序后显示解释器 (IPython) 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32613464/

有关python - 在 PyCharm 中运行程序后显示解释器 (IPython) 时出现问题的更多相关文章

  1. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  2. ruby - ECONNRESET (Whois::ConnectionError) - 尝试在 Ruby 中查询 Whois 时出错 - 2

    我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.

  3. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  4. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  5. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  6. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  7. ruby-on-rails - link_to 不显示任何 rails - 2

    我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article

  8. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  9. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  10. Python 相当于 Perl/Ruby ||= - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。

随机推荐