Tidak dapat mengetik huruf "b" dalam shell Python di OS X

8

Saya punya masalah dengan huruf "b" saya di shell Python di OS X. Saya tidak bisa mengetik "b", tapi "B" bekerja dengan baik.

Bagaimana saya bisa mengatasi masalah ini?

Sam
sumber
Apa yang Anda maksud dengan "tidak bisa mengetik"? Sesuatu secara fisik menghentikan Anda menekan tombol b kecuali Anda juga menekan Shift? Atau tidak ada efek dari menekan tombol? Atau Anda mendapatkan beberapa pesan kesalahan saat baris yang hanya berisi "b"?
Joachim Sauer
Apa tepatnya ? Apa sebenarnya yang Anda lakukan / ketikkan, apa yang sebenarnya terjadi dan apa sebenarnya pesan kesalahannya (jika ada)?
Jika tidak ada huruf lain yang terpengaruh, sepertinya masalah perangkat keras dengan keyboard Anda dan harus dimigrasikan ke Super User.
pavium
Saat menekan huruf "b" tidak berpengaruh apa pun dan jangan mengetik huruf "b" tetapi saat aku menekan huruf "B" (Shift + b), lalu ketik huruf "B" di konsol
2
Lihat juga pertanyaan ini .
Keith Thompson

Jawaban:

9

Baris bermasalah di Anda .pythonstartupadalah sesuatu seperti:

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

Ini .pythonstartupakan memperbaikinya ...

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")
Gregg Lind
sumber
itu memang memecahkan masalah yang sama bagi saya!
zmo
+1 Saya baru saja menginstal python dari homebrew kemarin dan mengalami masalah ini pagi ini. Diperbarui file startup python saya dan semuanya baik-baik saja. Ini adalah efek samping yang sangat spesifik (dan sangat aneh).
Seth
2

Pertama, ini tidak terjadi sampai saya memperbarui python 2.7.1 ke 2.7.3. Yang mengatakan, perbaikannya ada di jalur:

baris lama:

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

garis baru:

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

Kode lengkap di ~ ~ .pythonrc saya

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
GodOfWare
sumber
1

Saya memiliki masalah yang sama. Ini terjadi ketika Anda menggunakan versi MacPorts dari Python di Snow Leopard.

Saya tidak melihat masalah ini dalam Python Apple yang datang dengan Mac OS X. Jadi, solusinya adalah mengatur mengatur PYTHONPATHmenunjuk ke paket MacPorts ':

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

(atau versi Python yang berbeda) dan gunakan Python Apple.

slhck
sumber
1

Sayangnya, penyelesaiannya tidak bijaksana.

Apple berasumsi bahwa versinya tidak berubah ketika melakukan peningkatan dan fungsi lainnya. Sebagai gantinya, disarankan bahwa jika Anda ingin memutakhirkan python atau memperluasnya bahwa Anda menginstal versi lokal, baik di bawah /optatau folder rumah Anda.

Saya juga memiliki masalah yang sama, dan saya tidak menggunakan versi python MacPorts.


Saya menggunakan versi terbaru vpython, visual python, dari www.vpython.org di bawah Mac OX X Lion yang berjalan di MacBook Air terbaru (generasi 3).

Saya menginstal vpython menggunakan biner terbaru mereka dan menggunakan instruksi mereka. Itu datang dengan installer sehingga itu adalah titik dan klik. Ini adalah versi modifikasi dari Python 2.7.1. Ini adalah versi 32 bit. (Saya percaya mereka belum porting ke 64 bit). Saya kemudian menginstal VPython-Mac-Py2.7-5.71. Saya mengikuti ini dengan scipy dari www.scipy.org dan matplotlib dari matplotlib.sourceforge.net Semua instalasi ini menggunakan installer.

Ketika saya menjalankan python dari alat pengembangan mereka, idle, atau varian vpython, vidle, saya tidak punya masalah. Jika saya membuka terminal dan menjalankan python dari bash shell, shell tidak akan mengenali kunci "b" di keyboard. Ini akan memberi Anda bunyi 'bel', alih-alih mengetik 'karakter b'. Namun, Anda dapat memasukkan huruf 'B'. Sepertinya kunci ini dipetakan ke beberapa 'karakter' yang tidak ditampilkan, mungkin karakter 'bel' dalam kode ASCII lama.

Saya mencoba mengubah emulasi ke xterm, vt100, vt102. Saya juga bermain dengan skema pengkodean yang berbeda seperti hanya menggunakan UTF-8. Saya juga menekan kombinasi tombol khusus yang berbeda seperti perintah-b dll. Tidak ada yang berhasil.

Solusi saya satu-satunya adalah menulis skrip dari idle atau vidle.

Saya harap ini membantu memperjelas masalahnya.

Mercier ga
sumber
Saya bekerja sedikit lebih pada ini ... sepertinya orang lain memiliki masalah yang sama dengan antarmuka python lainnya. Dalam sistem saya, saya memiliki file .pythonrc.py yang diuraikan ketika python dimulai (ditunjukkan oleh PYTHONSTARTUP). Dalam file ini dua modul dimuat rlcompleter dan readline. Kemudian memanggil readline.parse_and_bind ("bind -v"). Panggilan ini menginisialisasi modul readline dengan menyalin bindings dari shell (Anda dapat melihat milik Anda dengan masuk ke bash shell dan mengetik 'bind -v' (tanpa tanda kutip)). Salah satunya harus menciptakan masalah. Jika saya berkomentar baris (tempat # di depannya.), Masalahnya hilang.
ga mercier
1
Anda dapat mengedit posting Anda untuk memasukkan itu, mungkin membuatnya lebih mudah dibaca.
slhck