[英]How do I get IPython 5 to work with SublimeREPL?
我跟着(实际上,我写了) 这个gist中的指令,以修改ipy_repl.py
附带的ipy_repl.py
文件,以便让它在当时使用更新版本的IPython。 但是,我最近pip
升级了我的IPython和Jupyter包
pip3 install -U ipython jupyter
到最新版本,现在我在尝试从Sublime启动IPython会话时遇到此错误:
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年二月初后的某个时刻, prompt_toolkit
模块应运而生使用jupyter_console
。 虽然我认为这给整个项目带来了一些好处,但一个缺点是与jupyter_console
通信的所有文本接口必须是TTY(一个相当愚蠢的要求,IMO),Sublime视图不是。
我无法找到解决这个
bug
功能的方法。 有谁知道如何解决这个问题?
我已经修改了你的要点,所以它适用于最新版本的Jupyter / IPython 6.1.0。
您只需要插入附加配置
cfg.ZMQTerminalInteractiveShell.simple_prompt = True
在38和41之间的某个地方。
第68-73行的黑客攻击
if os.name == "nt":
在Win 7/10上我没有必要。 如果您没有将其注释掉,它只会显示两次横幅。
强制使用simple-prompt
选项仅提供有限的shell功能(例如,没有多行输入)。
可以使用IPython.terminal.ipapp.TerminalIPythonApp
而不是jupyter_console.app.ZMQTerminalIPythonApp
来使用IPython shell。 然而,在那里,你失去了GUI事件循环集成(即%gui
魔术)。
另外,在Sublime Text中关闭shell窗口时,我无法弄清楚如何正确退出Jupyter shell。 在不首先发出quit
命令的情况下,jupyter内核的连接文件不会被删除 - 谁知道还有什么继续运行...
我也一样,我解决了,我也在这里回答了这个问题。
有两种方法可以实现,win10,conda python3.6.7,Ipython7.1.1,Sublime 3.1.1
1.打开\\ Packages \\ SublimeREPL \\ config \\ Python \\ Main.sublime-menu ,找到该行
"windows": ["python", "-u", "${packages}/SublimeREPL/config/Python/ipy_repl.py"]
并将其更改为您的ipython.exe所在的位置,对我来说
"windows": ["C:\Python\envs\py37\Scripts\ipython.exe"]
2.只需修改\\ Packages \\ SublimeREPL \\ config \\ Python \\ ipy_repl.py到3行,
import os
# change dir to path_to_ipython.exe
os.chdir(r'C:\Python\envs\py37\Scripts')
os.system('ipython')
我更喜欢第二种,如果你用第一种方式来解决问题,例如关于sublimeREPL的快捷方式不起作用(发生在我身上:(),请尝试第二种方法)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.