Próbuję uruchomić interpreter ipython zdalnie (z Emacsem 24.5 i natywnym python.el
), ale nie jestem pewien, czy mam odpowiednie podejście: za każdym razem, gdy próbuję uruchomić takie polecenie, na przykład (które jest uruchamiane C-c C-c
):
Run Python: /ssh:<server_name>:/usr/local/bin/ipython -i
(z <server_name>
poprawnym wpisem w mojej ~/.ssh/config
i ipython
dostępnym w tej zdalnej lokalizacji) pojawia się błąd:
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'
jak również:
env: /ssh:<server_name>:/usr/local/bin/ipython: No such file or directory
w *Python*
buforze. Czy to wykorzystuje tramp
i jest w python.el
stanie uruchamiać zdalnych tłumaczy w taki sposób?
@ serv-inc answear to najlepsze podejście tutaj:
ale błąd nadal się nie powiedzie:
Musisz odwoływać się do pliku wykonywalnego na swojej ścieżce, więc bezpośrednie polecenia powłoki nie będą odtwarzane, ale napisanie skryptu opakowania rozwiąże to, nazwijmy to
remote-python
:-t
wymusi przydział pseudo terminala.$@
przekaże wszystkie otrzymane argumenty do zdalnego ipython.Ten skrypt musi znajdować się w katalogu zdefiniowanym w
PATH
zmiennej. Możesz to sprawdzić w Emacsie za pomocą:następnie możesz ustawić
remot-python
jako tłumacza:Jeśli pojawi się ostrzeżenie dotyczące obsługi redline:
Uwaga:
Piękno tej metody, która powinna współpracować z prawie każdym tłumaczem. Przetestowałem to również z REPL trybu Julii i możesz napisać interaktywną funkcję, aby przełączyć zdalnych / lokalnych tłumaczy.
źródło
Spróbuj ocenić (lub nawet w
.emacs
)i używaj jak lokalnego eval na dowolnym pliku Pythona.
Pierwszy wiersz ustawia pilota
ipython
jako domyślnego tłumacza. Druga linia rozwiązuje problem ipython.źródło