दूर से चल रहा है


9

मैं दूर से एक ipython दुभाषिया चलाने की कोशिश कर रहा हूँ (Emacs 24.5 और देशी के साथ 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*बफर में .. इस का उपयोग कर रहा है tramp, और python.elइस तरह से दूरदराज के दुभाषियों को चलाने में सक्षम है?

जवाबों:


5

एक तरीका है उपयोग करना *eshell*

  • M-x eshell
  • cd /ssh:<server_name>:~
  • run-python /usr/bin/ipython
  • *Python*बफर पर स्विच करें ।

3
यह अच्छा है, लेकिन यह पायथन बफर को कोड भेजने के लिए संभव नहीं बनाता है । क्या वो सही है?
बकाकुना

@ बाकाकुना मैंने हल किया कि मेरे उत्तर की जांच करें
atevm

4

@ सर्व इंक जवाब सबसे अच्छा तरीका यहाँ है:

"

लेकिन यह अभी भी त्रुटि के साथ विफल हो जाएगा:

No such file or directory, ssh\

आपको अपने पथ पर एक निष्पादन योग्य का संदर्भ देना होगा, इसलिए सीधे शेल कमांड नहीं खेलते हैं, लेकिन एक आवरण स्क्रिप्ट लिखने से यह हल हो जाएगा, चलो नाम दें 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)

ध्यान दें:

इस विधि की सुंदरता, कि यह लगभग हर दुभाषिया के साथ काम करना चाहिए। मैंने इसे जूलिया-मोड के आरईपीएल के साथ भी परीक्षण किया और आप अपने रिमोट / स्थानीय दुभाषियों को स्विच करने के लिए एक इंटरैक्टिव फ़ंक्शन लिख सकते हैं।


यह जानकर अच्छा लगा कि इससे थोड़ी मदद मिली। धन्यवाद
सर्व-

0

मूल्यांकन का प्रयास करें (या यहां तक ​​कि .emacs)

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

और किसी भी अजगर फ़ाइल पर अपने स्थानीय eval की तरह उपयोग करें।

पहली पंक्ति रिमोट ipythonको आपके डिफ़ॉल्ट दुभाषिया के रूप में सेट करती है । दूसरी पंक्ति एक ipython समस्या को ठीक करती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.