OS X में पायथन शेल में "b" अक्षर टाइप नहीं कर सकते


8

मुझे ओएस एक्स में पायथन शेल में मेरे "बी" पत्र के साथ एक समस्या है। मैं "बी" टाइप नहीं कर सकता, लेकिन "बी" ने ठीक काम किया।

कैसे मैं इस मुद्दे को हल कर सकता हूँ?


"आप टाइप नहीं कर सकते" से क्या मतलब है? कुछ भौतिक रूप से आपको बी कुंजी दबाने से रोकता है जब तक आप शिफ्ट नहीं दबाते हैं? या बटन दबाने से कोई प्रभाव नहीं है? या आपको कुछ त्रुटि संदेश मिलता है जब आप लाइन करते हैं जिसमें केवल "बी" होता है?
जोआचिम सॉउर

वास्तव में क्या ? आप वास्तव में क्या कर रहे हैं / टाइप कर रहे हैं, वास्तव में क्या होता है और वास्तव में त्रुटि संदेश क्या है (यदि कोई है)?

यदि कोई अन्य पत्र प्रभावित नहीं होते हैं, तो यह आपके कीबोर्ड के साथ एक हार्डवेयर समस्या की तरह लगता है और इसे सुपर उपयोगकर्ता के लिए माइग्रेट किया जाना चाहिए।
पेविअम

जब "b" अक्षर दबाने से कोई प्रभाव नहीं पड़ता है और "b" अक्षर टाइप नहीं करते हैं, लेकिन जब मैं "B" अक्षर (Shift + b)

जवाबों:


9

आप में समस्याग्रस्त रेखा .pythonstartupकुछ इस प्रकार है:

 readline.parse_and_bind("bind ^I rl_complete") # darwin libedit

यह .pythonstartupइसे ठीक कर देगा ...

try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter
    if 'libedit' in readline.__doc__:
        readline.parse_and_bind("bind ^I rl_complete")
    else:
        readline.parse_and_bind("tab: complete")

कि मेरे लिए एक ही मुद्दे को हल किया!
zmo

+1 मैंने कल ही होमब्रे से अजगर को स्थापित किया और आज सुबह इस समस्या में भाग गया। मेरे अजगर स्टार्टअप फाइल को अपडेट किया और सब कुछ फिर से अच्छा है। यह एक बहुत ही विशिष्ट (और अत्यंत विषम) दुष्प्रभाव है।
सेठ

2

सबसे पहले, यह तब तक नहीं हुआ जब तक मैंने अजगर 2.7.1 से 2.7.3 तक अपडेट नहीं किया। उस ने कहा, लाइन पर तय है:

पुरानी लाइन:

if(sys.platform == 'darwin'): #FIX

नई पंक्ति:

if(sys.platform == 'darwin') and 'libedit' in readline.__doc__: #FIX

मेरा ~ / .pythonrc में पूर्ण कोड

import atexit
import os
try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter
    import sys
    if(sys.platform == 'darwin') and 'libedit' in readline.__doc__: #FIX
    # OSX
        readline.parse_and_bind ("bind ^I rl_complete")
    else:
    # Linux
        readline.parse_and_bind("tab: complete")

historyPath = os.path.expanduser("~/.pyhistory")

def save_history(historyPath=historyPath):
    readline.write_history_file(historyPath)

if os.path.exists(historyPath):
    readline.read_history_file(historyPath)

atexit.register(save_history)
del atexit, save_history, historyPath

1

मेरे साथ भी वही दिक्कत है। यह तब होता है जब आप स्नो लेपर्ड में अजगर के मैकपोर्ट्स संस्करण का उपयोग करते हैं।

मैं इस मुद्दे को Apple के पायथन में नहीं देखता जो मैक ओएस एक्स के साथ आता है। इसलिए, PYTHONPATHमैकपॉर्ट्स के पैकेज की ओर इशारा करते हुए वर्कअराउंड होना चाहिए :

/opt/local/lib/python/site-packages:/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/ 

(या एक अलग पायथन संस्करण) और Apple के पायथन का उपयोग करें।


1

दुर्भाग्य से, वर्कअराउंड एक बुद्धिमान नहीं है।

Apple मानता है कि उन्नयन और अन्य कार्यों को करते समय इसका संस्करण अपरिवर्तित है। इसके बजाय, यह अनुशंसा की जाती है कि यदि आप अजगर को अपग्रेड करना चाहते हैं या इसका विस्तार करना चाहते हैं कि आप एक स्थानीय संस्करण स्थापित करते हैं, या तो /optअपने घर के नीचे या अपने फ़ोल्डर में।

मेरे पास भी यही समस्या है, और मैं अजगर के मैकपोर्ट्स संस्करण का उपयोग नहीं करता हूं।


मैं नवीनतम मैकबुक एयर (पीढ़ी 3) में चल रहे मैक ओएक्स एक्स लायन के तहत www.vpython.orgvpython से, विज़ुअल पायथन के नवीनतम संस्करण का उपयोग कर रहा हूं ।

मैंने उनके नवीनतम बाइनरी का उपयोग करके और उनके निर्देशों का उपयोग करते हुए vpython स्थापित किया। यह एक इंस्टॉलर के साथ आता है इसलिए यह बिंदु और क्लिक है। यह पाइथन 2.7.1 का संशोधित संस्करण है। यह 32 बिट संस्करण है। (मेरा मानना ​​है कि उन्होंने इसे 64 बिट्स पर पोर्ट नहीं किया है)। मैंने तब VPython-Mac-Py2.7-5.71 स्थापित किया। मैंने www.scipy.org से माफ़ी और इसके बाद matplotlib.sourceforge.net से matplotlib का पालन किया। ये सभी इंस्टालेशन इंस्टॉलर का उपयोग करते हैं।

जब मैं अजगर को उनके विकास उपकरण, बेकार, या vpython संस्करण, vidle से चलाता हूं, तो मुझे कोई समस्या नहीं है। यदि मैं एक टर्मिनल खोलता हूं और बैश शेल से अजगर चलाता हूं, तो कीबोर्ड कीबोर्ड में "बी" कुंजी को नहीं पहचान पाएगा। यह आपको 'वर्ण बी' टाइप करने के बजाय 'घंटी' की आवाज़ देगा। हालाँकि, आप 'B' अक्षर दर्ज कर सकते हैं। ऐसा लगता है कि यह कुंजी कुछ गलत गैर-प्रदर्शित 'वर्ण' के लिए मैप की गई है, संभवतः पुराने ASCII कोड में 'घंटी' वर्ण है।

मैंने अनुकरण को xterm, vt100, vt102 में बदलने की कोशिश की। मैंने अलग-अलग एन्कोडिंग योजनाओं के साथ भी खेला जैसे कि यूटीएफ -8 का उपयोग करना। मैंने विशेष कुंजियों जैसे कमांड-बी आदि के विभिन्न संयोजन को भी दबाया।

मेरा एकमात्र तरीका निष्क्रिय या विडल से स्क्रिप्ट लिखना है।

मुझे उम्मीद है कि इससे समस्या को स्पष्ट करने में मदद मिलेगी।


मैंने इस पर थोड़ा अधिक काम किया ... ऐसा लगता है कि अन्य लोगों को अन्य अजगर इंटरफेस के साथ समान समस्याएं हैं। मेरे सिस्टम में मेरे पास एक .pythonrc.py फ़ाइल है जिसे python शुरू होने पर (PYTHONSTARTUP द्वारा इंगित) शुरू किया गया है। इस फ़ाइल में दो मॉड्यूल लोडरप्लेटर और रीडलाइन लोड किए गए हैं। यह तब readline.parse_and_bind ("bind -v") कहता है। यह कॉल शेल से बाइंडिंग की प्रतिलिपि बनाकर रीडलाइन मॉड्यूल को निष्क्रिय कर देता है (आप बैश शेल में जाकर 'बाइंड -v' (कोई उद्धरण नहीं) लिखकर देख सकते हैं)। इनमें से एक समस्या को क्रिएट करना चाहिए। यदि मैं लाइन (इसके सामने जगह #) टिप्पणी करता हूं, तो समस्या गायब हो जाती है।
गा मर्सीर

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