python - 如何让 IPython 5 与 SublimeREPL 一起工作?

标签 python ipython sublimetext jupyter sublimerepl

我遵循(实际上,我创作了)this gist 中的说明为了修改 SublimeREPL 附带的 ipy_repl.py 文件为了让它在当时与更新版本的 IPython 一起工作。但是,我最近 pip 升级了我的 IPython 和 Jupyter 包

pip3 install -U ipython jupyter

到最新版本,现在我在尝试从 Sublime 启动 IPython session 时遇到此错误:

Traceback (most recent call last):
  File "/home/mattdmo/.config/sublime-text-3/Packages/SublimeREPL/config/Python/ipy_repl.py", line 66, in <module>
    embedded_shell.initialize()
  File "<decorator-gen-113>", line 2, in initialize
  File "/usr/local/lib/python3.5/dist-packages/traitlets/config/application.py", line 74, in catch_config_error
    return method(app, *args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/jupyter_console/app.py", line 137, in initialize
    self.init_shell()
  File "/usr/local/lib/python3.5/dist-packages/jupyter_console/app.py", line 110, in init_shell
    client=self.kernel_client,
  File "/usr/local/lib/python3.5/dist-packages/traitlets/config/configurable.py", line 412, in instance
    inst = cls(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/jupyter_console/ptshell.py", line 252, in __init__
    self.init_prompt_toolkit_cli()
  File "/usr/local/lib/python3.5/dist-packages/jupyter_console/ptshell.py", line 404, in init_prompt_toolkit_cli
    self.pt_cli = CommandLineInterface(app, eventloop=self._eventloop)
  File "/usr/local/lib/python3.5/dist-packages/prompt_toolkit/interface.py", line 80, in __init__
    self.output = output or create_output()
  File "/usr/local/lib/python3.5/dist-packages/prompt_toolkit/shortcuts.py", line 124, in create_output
    ansi_colors_only=ansi_colors_only, term=term)
  File "/usr/local/lib/python3.5/dist-packages/prompt_toolkit/terminal/vt100_output.py", line 425, in from_pty
    assert stdout.isatty()
AssertionError

我做了一些挖掘,在 2016 年 2 月上旬之后的某个时候,prompt_toolkit模块在 jupyter_console 中开始使用。虽然我认为这会给整个项目带来一些好处,但一个缺点是所有与 jupyter_console 通信的文本接口(interface)都必须是 TTY(这是一个相当愚蠢的要求,IMO),而 Sublime View 不是。

我无法找到解决此错误 功能的方法。有谁知道如何解决这个问题?

最佳答案

通过一系列偶然的事件,我遇到了一个我几个月没用过的旧 Win7 VM,它没有升级,所以 IPython REPL 仍然可以工作。通过一些实验,我发现如果我将 ipython 降级到 4.1.1 版并将 jupyter_console 降级到 4.1.0 版,一切正常:

pip3 install -U ipython==4.1.1 jupyter_console==4.1.0

这不是一个完美的解决方案,因为我无法使用 IPython 5 的新功能,但它绝对比一直盯着回溯要好。我更新了my gist在问题中提到以反射(reflect)这一发现,并想在此处发布此问答以宣传,但我仍在寻找使 IPython 5 正常工作的方法。

关于python - 如何让 IPython 5 与 SublimeREPL 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39058283/

相关文章:

python - 将 pandas 中的行值扩展为多列

python, ipython运行交互脚本

environment-variables - 是否可以在 .sublime-project 文件中设置环境变量?

ipython - 我可以从 IPython.display.Markdown 获取 html 字符串吗?

python - 与 c 扩展交互时,IPython 的行为与 CPython 不同

sublimetext - Sublime Text 3 Windows列选择与Alt?

bash - 在不打开空白窗口的情况下从命令行打开 Sublime 项目

python - 操作 if any for 循环的输出

python - 当路由上有多个表单时,如何对表单提交进行单元测试?

python - 如何删除包含零的 numpy 数组中的一行?