IPython 5 का उपयोग करते समय अजीब शेल आउटपुट


37

मैं अभी IPython के नवीनतम संस्करण में अपग्रेड किया गया था और अब emacs में इसका उपयोग करते समय कुछ गलत है।

जब एक नियमित रूप से टर्मिनल में इसे का उपयोग यह ठीक (रंग, टैब-पूरा होने के, आदि), में काम करता है लेकिन या तो M-x eshellया M-x shell, outputing के बजाय In [1]:, यह वास्तव में आउटपुट [?12l[?25hऔर Out[1]आउटपुट से [J[?7h[?12l[?25h[?2004l[?7hOut[1]:

हो सकता है कि यह IPython द्वारा इस्तेमाल किए गए emacs पर उपलब्ध टर्मिनल की कुछ विशेषता नहीं है, लेकिन मैं जानना चाहूंगा कि यह कौन सा है।

Terminal.app:

In [1]: 2+2
Out[1]: 4

Emacs

[?12l[?25h2+2
[J[?7h[?12l[?25h[?2004l[?7hOut[1]: 4

क्या आपने बग को खोल दिया है? मुझे कुछ भी नहीं मिला, लेकिन Gmane को फिर से काम में लेने के साथ ATM को खोजना थोड़ा कठिन है।
रासमस

2
संदर्भ के लिए, अपस्ट्रीम बग # 25306
npostavs

जवाबों:


41

IPython 5 में एक नया टर्मिनल इंटरफ़ेस है, जो Emacs के अवर गोले के साथ संगत नहीं है। इसे ठीक करने के लिए, --simple-promptध्वज को IPython कमांड में जोड़ें:

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

प्रलेखन से:

नया इंटरफ़ेस Emacs 'अवर-शेल' फ़ीचर के साथ संगत नहीं है। इसका उपयोग जारी रखने के लिए, --simple-promptध्वज को Emacs रन के कमांड में जोड़ें । यह ध्वज सबसे अधिक IPython सुविधाओं को अक्षम करता है, टैब पूरा होने जैसी चीजों को प्रदान करने के लिए Emacs पर निर्भर करता है।

संदर्भ: http://ipython.readthedocs.io/en/stable/whatsnew/version5###1


6
हां, यह वही है जो मैंने पहली बार किया था, हालांकि मल्टीलाइन सपोर्ट (फंक्शन डेफिनिशन के लिए सबसे महत्वपूर्ण) की कमी ने मुझे वापस ipython 4 में ला दिया। यह ध्यान दिया जाना चाहिए कि हालांकि ipython 5 Mx टर्म के साथ ठीक काम करता है।
साहित्यिक

3
इस ध्वज को स्थापित करना अभी भी एल्पी के साथ बहुत उपयोगी है, हालांकि-चर के माध्यम से python-shell-interpreter-args। यदि आपने एल्पी की कोशिश नहीं की है, तो आपको इसे देखना चाहिए। यह आपको अपने फ़ंक्शन की परिभाषाओं को एक अलग बफर में लिखने की अनुमति देता है और आसानी से केवल एक कमांड के साथ दुभाषिया को पास करता है। इस स्थिति में, आप सभी Emacs के संपादन आदेशों का उपयोग कर सकते हैं और एक संवादात्मक सत्र प्राप्त कर सकते हैं - दोनों दुनिया के सर्वश्रेष्ठ।
रिकार्डो लीमा

1
कारण है कि यह भी लिंक पर लिखा है @Literal: वे का उपयोग करने से बदल readlineकरने के लिए prompt_toolkitIPython 5 पर prompt_toolkitEmacs गोले, जिसमें से अलग तरह से काम साथ संगत नहीं है termजहाँ तक मुझे पता है, गोले और अधिक की तरह काम करने के उद्देश्य से गूंगा टर्मिनलों चलाएँ: एक मानक Emacs बफर, जबकि termएक वास्तविक पूर्ण टर्मिनल एमुलेटर चलाता है। ऐसा लगता है कि गोले के साथ संगत है, readlineलेकिन ऐसा नहीं है prompt_toolkit, जो भागने के दृश्यों को दिखाते हुए शीघ्रता से समझाएगा। चूंकि termएक पूर्ण टर्मिनल चलाता है, यह सही ढंग से एस्केप अनुक्रम की व्याख्या करता है।
रिकार्डो लीमा

1
मैंने इसे स्वीकार नहीं किया क्योंकि मैं अन्य विशेषताओं को बनाए रखना पसंद करता था, शायद अधिक सुविधाओं के साथ एक और शेल मोड का उपयोग कर रहा था। लेकिन मुझे लगता है कि मुझे इसके साथ रहना होगा।
शाब्दिक

1
@CodyChan यह पूर्णता, रंग, आदि जैसे UI से संबंधित IPython सुविधाओं को निष्क्रिय कर देता है। यह% मैजिक कमांड, इनपुट / आउटपुट हिस्ट्री, शेल कमांड,? हेल्प कमांड आदि जैसी चीजों को रखता है
jpkotta

0

वहाँ का उपयोग करने के बिना emacs खोल में IPython खोलने के लिए एक तरीका है -simple-प्रॉम्प्ट

1. pip install rlipython

2. Open IPython in terminal

3. Run import rlipython; rlipython.install() 

इसके बाद, आपको डिस्प्ले की समस्या का अनुभव किए बिना सीधे एमएसीएस शेल में आईपीथॉन खोलने में सक्षम होना चाहिए।

हालांकि मेरे मामले में एक और समस्या है: किसी कारण से, प्रदर्शन सही हो जाने के बाद भी, मैं अभी भी एमएसीएस खोल में कुछ बहु-पंक्ति वर्ग परिभाषाओं को ipython में कॉपी-पेस्ट नहीं कर सका। मेरा वर्तमान समाधान Ipython% पेस्ट कमांड का उपयोग करना है। यदि आपके पास बेहतर दृष्टिकोण हैं, तो कृपया मुझे बताएं।

PS: मैं Ubuntu 16.04 का उपयोग कर रहा हूं। कोई MacOS का उपयोग करता है कहते हैं कि यह IPython को तोड़ता है।



यह ipython स्थापना को भ्रष्ट करता है
Diogo

किस तरीके से? यह मेरे लिए ठीक काम करता है
DataHungry

यह MacOS पर IPython को तोड़ता है, github.com/ludwigschwardt/python-gnureadline/issues/50
एल्विन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.