远程运行ipython


9

我正在尝试远程运行ipython解释器(使用Emacs 24.5和native python.el),但是我不确定我使用的方法是否正确:例如,每当尝试运行这样的命令时(通过触发C-c C-c):

Run Python: /ssh:<server_name>:/usr/local/bin/ipython -i

<server_name>在我的中有一个有效条目~/.ssh/config,并且ipython在该远程位置可用),我收到如下错误:

Warning (emacs): Python shell prompts cannot be detected.
If your emacs session hangs when starting python shells
recover with `keyboard-quit' and then try fixing the
interactive flag for your interpreter by adjusting the
`python-shell-interpreter-interactive-arg' or add regexps
matching shell prompts in the directory-local friendly vars:
  + `python-shell-prompt-regexp'
  + `python-shell-prompt-block-regexp'
  + `python-shell-prompt-output-regexp'
Or alternatively in:
  + `python-shell-prompt-input-regexps'
  + `python-shell-prompt-output-regexps'

以及:

env: /ssh:<server_name>:/usr/local/bin/ipython: No such file or directory

*Python*缓冲区中。.这是否利用tramppython.el能够以这种方式运行远程解释器?

Answers:


5

一种方法是使用*eshell*

  • M-x eshell
  • cd /ssh:<server_name>:~
  • run-python /usr/bin/ipython
  • 切换到*Python*缓冲区。

3
很好,但这无法将代码发送到Python缓冲区。那是对的吗?
BakaKuna

@BakaKuna我解决了检查我的答案的问题
atevm '18

4

@ serv-inc answear是这里的最佳方法:

(setq python-shell-解释器“ ssh yourhost ipython” python-shell-interpreter-args“-simple-prompt -i”)

但仍然会失败,并显示以下错误:

No such file or directory, ssh\

您必须在路径上引用一个可执行文件,这样就不会播放直接的shell命令,但是编写一个包装脚本可以解决这个问题,我们将其命名为remote-python

#!/usr/bin/env bash
ssh hostname -t "ipython $@"

-t 将强制伪终端分配。

$@ 将所有接收到的参数委托给远程ipython。

该脚本必须位于PATH变量中定义的目录中。您可以使用以下命令在Emacs中进行检查:

(getenv "PATH")

然后可以将其设置remot-python为您的解释器:

(setq python-shell-interpreter "remote-python"
            python-shell-interpreter-args "-i --simple-prompt")

如果您收到有关红线支持的警告:

(setq python-shell-completion-native-enable nil)

注意:

这种方法的优点在于它几乎可以与所有解释器一起使用。我还使用julia-mode的REPL对其进行了测试,您可以编写一个交互功能来切换远程/本地解释器。


很高兴知道它有所帮助。谢谢
serv-inc

0

尝试评估(甚至在中.emacs

(setq python-shell-interpreter "ssh yourhost ipython"
      python-shell-interpreter-args "--simple-prompt -i")

并像在任何python文件上一样使用本地评估。

第一行将遥控器设置ipython为默认解释器。第二行修复了ipython问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.