पाइथन को अंतःक्रियात्मक रूप से चलाने के बाद ओएस-एक्स टर्मिनल अजीब तरह से व्यवहार करता है


11

ओएस-एक्स टर्मिनल में एक अजगर उत्तर (2.7.10) चलाने और बाहर निकलने के बाद, टर्मिनल अब इको टाइप टाइप इनपुट और कुछ अन्य अजीब चीजें होती हैं। यदि मैं pythonफिर से दौड़ता हूं और exit()फिर, टर्मिनल को बहाल किया जाता है। मैं अब केवल टैब बंद करता हूं और एक नया खोलता हूं, इसलिए मैंने बड़े पैमाने पर परीक्षण किया।

मुझे लगता है कि यह टर्मिनल सेटिंग्स से संबंधित है, लेकिन यह हाल ही की बात है और मैंने कुछ भी नहीं बदला है जो मुझे याद है। पायथन के साथ स्थापित किया गया है macports, अगर कुछ कंसोल लाइब्रेरी के साथ गलत मिलान वाली निर्भरता के साथ कुछ करना है। 2.7.10 कुछ समय पहले स्थापित किया गया था, और स्थापना के बाद ऐसा नहीं हुआ।

दरारें पोर और खुल जाती हैंterminal

[~]: virtualenv-2.7 venv-test
[~]: source venv-test/bin/activate
[~]: python
>>> ^D>>>       *(press ctrl-d, the 2nd >>> is strange)
[~]:            *(type something like `ls-l`, nothing shows on console)
[~]: -bash: ls-l: command not found`

इसके अतिरिक्त, अजगर को फिर से चलाना और ctrl-dइस आउटपुट में परिणाम मारना :

>>> ^D           (ctrl-d, then hit enter, doesn't exit)
>>> ^D           (...)
>>> ^D           (...)
>>> exit()       (typing exit() quits the session)
>>> [~]: 

क्यों आप macports के माध्यम से अजगर स्थापित कर रहे हैं? पायथन v2.7.10 एल कैप के साथ शामिल है, और मुझे लगता है कि योसेमाइट ... क्या विशेष रूप से कुछ ऐसा है जो आपको मैक पोर्ट्स से मिल रहा है?
बेंजामिन शोलनिक

खैर, 2.7 का उपयोग कर। जो कुछ भी मैक के साथ भेज दिया गया था उससे अधिक है। सिस्टम अजगर को छूना नहीं (यूनिक्स पर मानक समस्या), कस्टम जीआईएस विकल्पों में संकलित 2.7 चल रहा है, उन लोगों के लिए पैकेज एमजीएमटी के साथ, साथ ही साथ 3.4। लेकिन असली कारण आपको यह करना चाहिए कि सिस्टम अजगर के साथ fsck नहीं है।
एंड्रयू बैकर

क्या अजगर आवेदन किसी भी तरह का विंडो प्रबंधन कर रहा है? (उदाहरण। शाप,
NCurses

कोई आवेदन नहीं है, बस टाइपिंग pythonऔर फिरctrl-d
एंड्रयू बैकर

जवाबों:


12

इस मुद्दे पर MacPorts में एक खुला बग है:

https://trac.macports.org/ticket/48807

यह कहता है कि "+ रीडलाइन" विकल्प के साथ अजगर को स्थापित करना समस्या को ठीक करता है, जिसे मैंने स्वयं करके सत्यापित किया था।

sudo port uninstall python27
sudo port install python27 +readline

9
अरे, उस बग रिपोर्ट को खोजने के लिए धन्यवाद। FWIW, python27 की स्थापना रद्द करना संभव नहीं है (बहुत सारे पैकेज इस पर निर्भर करते हैं, सामान्य रूप से), इसलिए आपको इसके बजाय पुनर्निर्माण करना चाहिए। भागो sudo port selfupdate && sudo port clean python27 && sudo port install python27 +readline। यदि आपका स्थानीय पेड़ पुराना है, तो उसके पास + रीडलाइन संस्करण उपलब्ध नहीं होगा; selfupdateउसे ठीक कर देंगे।
एंड्रयू बैकर

8

टर्मिनल मोड आपके एप्लिकेशन द्वारा कच्चे या क्रैक पर सेट किए जाते हैं, और असामान्य रूप से बाहर निकलने पर मोड बहाल नहीं होते हैं। विशेष रूप से, नई (नियंत्रण / जे उर्फ ​​लाइन फ़ीड) के लिए Enterकुंजी (नियंत्रण / एम उर्फ ​​कैरिज रिटर्न) को मैप करने वाली सुविधा अक्सर इस मामले में अक्षम होती है। आप दर्ज करके रिटर्न के साथ समस्या को ठीक कर सकते हैं

stty sane

के बाद controlJ

कम से कम आपको फिर से कमांड दर्ज करने देगा, हालांकि संपादन वर्ण जैसे कि backspaceउनके सामान्य कार्यों को नहीं सौंपा जा सकता है।

कुछ resetकमांड का उपयोग करने की सलाह भी दे सकते हैं , लेकिन दिए गए लक्षण उस कार्यक्रम के लिए प्रासंगिक नहीं हैं।

आगे पढ़ने के लिए


stty echoसमस्या को ठीक करने के लिए लगता है ( stackoverflow.com/questions/32475928/python3-messes-up-terminal )। यकीन नहीं होता कि यह सब ध्यान रखता है। मुझे लगता है कि मेरे अजगर के साथ थोड़ा गलत है, क्योंकि सिंटैक्स त्रुटियों को मैन्युअल रूप से एक नई कमांड में प्रवेश करने के लिए नई लाइन हिट करने की आवश्यकता होती है, और यह उस तरह से नहीं होना चाहिए।
एंड्रयू बैकर

हालांकि यह समस्या को ठीक नहीं करता है, यह कम से कम मुझे इस तथ्य के बाद इसे ठीक करने की अनुमति देता है। मेरे लिए काफी अच्छा है, अभी के लिए। अगर यह पता लगाने का कोई तरीका है कि ऐसा क्यों हो रहा है, तो मुझे जानना अच्छा लगेगा।
एंड्रयू बैकर

1

यह मेरे लिए काम किया (OSX और pyenv का उपयोग करके):

CFLAGS="-I$(brew --prefix readline)/include -I$(brew --prefix openssl)/include -I$(xcrun --show-sdk-path)/usr/include" \
LDFLAGS="-L$(brew --prefix readline)/lib -L$(brew --prefix openssl)/lib" \
PYTHON_CONFIGURE_OPTS=--enable-unicode=ucs2 \
pyenv install -v 2.7.11

स्रोत: https://medium.com/@pimterry/setting-up-pyenv-on-os-x-with-homebrew-56c7541fd331#.urbdkrc9l

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