我遵循(實際上,我創作了)this gist中的說明,以便修改SublimeREPL附帶的ipy_repl.py
文件,以便在當時使用更新版本的IPython。不過,我最近pip
升級我的IPython和Jupyter包如何讓IPython 5與SublimeREPL一起使用?
pip3 install -U ipython jupyter
到最新版本,並試圖開始從一個崇高的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年2月初之後的某個時間點,prompt_toolkit
模塊在jupyter_console
中投入使用。雖然我認爲這給整體項目帶來了一些優勢,但一個缺點是與jupyter_console
通信的所有文本界面都必須是TTY(一個相當愚蠢的要求,IMO),而崇高視圖不是。
我無法找到解決這個
錯誤
功能的方法。有誰知道如何解決這個問題?
我不熟悉SublimeREPL,但是我們已經添加了一個'--simple-prompt '爲Emacs'劣質外殼'功能的用戶提供IPython標誌。也許SublimeREPL也是這樣工作的?這完全禁用了prompt_toolkit和readline。 –
@ThomasK你知道如何以編程方式訪問?我不知道你是否看了一下'ipy_repl.py',但基本上它是建立到'ZMQTerminalIPythonApp'實例的連接,然後使用它與內核進行通信。你可以通過像'cfg.InteractiveShell.simple_prompt = True'這樣的機制來訪問'--simple-prompt'選項嗎? – MattDMo
@ThomasK我翻看了IPython文檔,並使用了'cfg.TerminalInteractiveShell.simple_prompt = True',但仍然得到與我的問題完全相同的錯誤。我們已經設置了'os.environ ['TERM'] ='emacs''來獲得「劣質shell」行爲,所以我不知道還有什麼其他的辦法。 – MattDMo