ไม่สามารถพิมพ์ตัวอักษร“ b” ใน Python shell ใน OS X


8

ฉันมีปัญหากับตัวอักษร "b" ของฉันใน Python shell ใน OS X ฉันไม่สามารถพิมพ์ "b" ได้ แต่ "B" ทำงานได้ดี

ฉันจะแก้ปัญหานี้ได้อย่างไร


คุณหมายถึง "ไม่พิมพ์" หมายความว่าอย่างไร มีบางสิ่งที่จะหยุดคุณจากการกดปุ่ม b ยกเว้นว่าคุณกด Shift ด้วย หรือไม่มีผลกระทบจากการกดปุ่ม? หรือคุณได้รับข้อความแสดงข้อผิดพลาดเมื่อบรรทัดที่มีเพียง "b"
Joachim Sauer

อะไรกันแน่ ? คุณกำลังทำอะไรอยู่ / พิมพ์ในสิ่งที่เกิดขึ้นและสิ่งที่เป็นข้อผิดพลาด (ถ้ามี)

หากไม่ได้รับจดหมายอื่น ๆ แสดงว่าดูเหมือนว่าปัญหาฮาร์ดแวร์ของแป้นพิมพ์ของคุณและควรย้ายไปที่ Super User
pavium

เมื่อกดตัวอักษร "b" จะไม่มีผลใด ๆ และห้ามพิมพ์ตัวอักษร "b" แต่เมื่อฉันกดตัวอักษร "B" (Shift + b) จากนั้นพิมพ์ตัวอักษร "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 ฉันเพิ่งติดตั้งไพ ธ อนจาก homebrew เมื่อวานนี้และพบปัญหานี้เมื่อเช้านี้ อัปเดตไฟล์เริ่มต้นของฉันและทุกอย่างก็ดี มันเป็นผลข้างเคียงที่เฉพาะเจาะจงมาก (และแปลกมาก)
เซ

2

ครั้งแรกสิ่งนี้ไม่ได้เกิดขึ้นจนกว่าฉันจะอัปเดต python 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

ฉันมีปัญหาเดียวกัน สิ่งนี้จะเกิดขึ้นเมื่อคุณใช้ Python ใน Snow Leopard เวอร์ชัน MacPorts

ฉันไม่เห็นปัญหานี้ใน Python ของ Apple ที่มาพร้อมกับ Mac OS X ดังนั้นวิธีแก้ปัญหาควรกำหนดPYTHONPATHให้ชี้ไปที่แพ็คเกจของ MacPorts:

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

(หรือ Python เวอร์ชั่นอื่น) และใช้ Python ของ Apple


1

น่าเสียดายที่การแก้ปัญหาไม่ใช่วิธีที่ฉลาด

Apple ถือว่ารุ่นนั้นไม่เปลี่ยนแปลงเมื่อทำการอัพเกรดและฟังก์ชั่นอื่น ๆ แต่ขอแนะนำว่าถ้าคุณต้องการอัพเกรดหลามหรือขยายมันให้คุณติดตั้งเวอร์ชันในเครื่องไม่ว่าจะเป็นภายใต้/optหรือโฟลเดอร์บ้านของคุณ

ฉันมีปัญหาเดียวกันและฉันไม่ได้ใช้ python เวอร์ชั่นของ MacPorts


ฉันใช้vpythonvisual python เวอร์ชันล่าสุดจากwww.vpython.orgภายใต้ Mac OX X Lion ที่ทำงานใน MacBook Air รุ่นล่าสุด (รุ่น 3)

ฉันติดตั้ง vpython โดยใช้ไบนารีล่าสุดและใช้คำแนะนำ มันมาพร้อมกับตัวติดตั้งดังนั้นมันจึงเป็นจุดและคลิก นี่เป็น Python 2.7.1 ที่แก้ไขแล้ว เป็นรุ่น 32 บิต (ฉันเชื่อว่าพวกเขาไม่ได้ย้ายไปที่ 64 บิต) ฉันติดตั้ง VPython-Mac-Py2.7-5.71 แล้ว ฉันติดตามสิ่งนี้โดย scipy จากwww.scipy.orgและ matplotlib จากmatplotlib.sourceforge.netการติดตั้งทั้งหมดเหล่านี้ใช้โปรแกรมติดตั้ง

เมื่อฉันใช้ python จากเครื่องมือในการพัฒนา, idle, หรือตัวแปร vpython, vidle, ฉันไม่มีปัญหา ถ้าฉันเปิดเทอร์มินัลและเรียกใช้หลามจากเปลือก bash เชลล์จะไม่รู้จักคีย์ "b" ในแป้นพิมพ์ มันจะให้เสียง 'ระฆัง' แทนการพิมพ์ 'ตัวอักษร b' อย่างไรก็ตามคุณสามารถป้อนตัวอักษร 'B' ดูเหมือนว่าคีย์นี้จะถูกแมปกับอักขระ 'ไม่ถูกต้อง' ที่ไม่ปรากฏซึ่งอาจเป็นอักขระ 'เบลล์' ในรหัส ASCII เก่า

ฉันลองเปลี่ยนการจำลองเป็น xterm, vt100, vt102 ฉันยังเล่นด้วยรูปแบบการเข้ารหัสที่แตกต่างกันเช่นเพียงแค่ใช้ UTF-8 ฉันยังกดปุ่มพิเศษต่าง ๆ เช่น command-b เป็นต้นซึ่งไม่มีอะไรทำงาน

วิธีแก้ปัญหาเดียวของฉันคือการเขียนสคริปต์ไม่ได้ใช้งานหรือ vidle

ฉันหวังว่าสิ่งนี้จะช่วยชี้แจงปัญหา


ฉันทำงานมากกว่านี้เล็กน้อย ... ดูเหมือนว่าคนอื่น ๆ จะมีปัญหาคล้ายกันกับอินเทอร์เฟซหลามอื่น ๆ ในระบบของฉันฉันมีไฟล์. pythonrc.py ที่จะถูกแยกวิเคราะห์เมื่อ python เริ่มต้น (ชี้ไปที่โดย PYTHONSTARTUP) ในไฟล์นี้สองโมดูลถูกโหลด rlcompleter และ readline จากนั้นเรียก readline.parse_and_bind ("bind -v") การเรียกนี้เริ่มต้นโมดูล readline โดยการคัดลอกการผูกจากเชลล์ (คุณสามารถเห็นคุณโดยไปที่เชลล์ bash และพิมพ์ 'bind -v' (ไม่มีเครื่องหมายคำพูด) หนึ่งในนั้นต้องสร้างปัญหาขึ้นมา หากฉันแสดงความคิดเห็นบรรทัด (วาง # ไว้ข้างหน้า) ปัญหาจะหายไป
ga mercier

1
คุณสามารถแก้ไขโพสต์ของคุณเพื่อที่จะทำให้ง่ายต่อการอ่าน
slhck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.