Estoy tratando de ejecutar un intérprete de ipython de forma remota (con Emacs 24.5 y nativo python.el
), pero no estoy seguro de tener el enfoque correcto: cada vez que intento ejecutar un comando de este tipo (que se activa con C-c C-c
):
Run Python: /ssh:<server_name>:/usr/local/bin/ipython -i
(con <server_name>
una entrada válida en my ~/.ssh/config
y ipython
disponible en esa ubicación remota), aparece un error como:
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'
tanto como:
env: /ssh:<server_name>:/usr/local/bin/ipython: No such file or directory
en un *Python*
búfer .. ¿Está haciendo uso de tramp
, y es python.el
capaz de ejecutar intérpretes remotos de tal manera?
@ serv-inc answear es el mejor enfoque aquí:
pero seguirá fallando con el error:
Debe hacer referencia a un ejecutable en su ruta, para que los comandos de shell directos no se reproduzcan, pero escribir un script de contenedor lo resolverá, vamos a nombrarlo
remote-python
:-t
forzará la asignación de pseudo terminal.$@
delegará todos los argumentos recibidos al ipython remoto.Este script debe estar en un directorio que esté definido en su
PATH
variable. Puede verificar esto dentro de Emacs con:entonces puede establecer
remot-python
como su intérprete:Si recibe una advertencia sobre el soporte de línea roja:
Nota:
La belleza de este método es que debería funcionar con casi todos los intérpretes. También lo probé con el REPL de julia-mode y puedes escribir una función interactiva para cambiar tus intérpretes remotos / locales.
fuente
Intenta evaluar (o incluso en
.emacs
)y use como su evaluación local en cualquier archivo de Python.
La primera línea establece el control remoto
ipython
como su intérprete predeterminado. La segunda línea corrige un problema de ipython.fuente