Non è possibile digitare la lettera "b" nella shell Python in OS X


8

Ho un problema con la mia lettera "b" nella shell Python in OS X. Non riesco a digitare "b", ma "B" ha funzionato bene.

Come posso risolvere questo problema?


Cosa intendi con "impossibile digitare"? Qualcosa ti impedisce fisicamente di premere il tasto b a meno che tu non prema anche Maiusc? O non c'è alcun effetto dalla pressione del pulsante? Oppure ricevi un messaggio di errore quando la riga contiene solo "b"?
Joachim Sauer,

Che cosa esattamente ? Cosa stai esattamente facendo / digitando, cosa succede esattamente e qual è esattamente il messaggio di errore (se ce n'è uno)?

Se non sono interessate altre lettere, sembra un problema hardware con la tastiera e deve essere migrato a Super User.
padiglione

Quando si preme la lettera "b" non si ottiene alcun effetto e non si digita la lettera "b", ma quando si preme la lettera "B" (Maiusc + b), quindi la lettera "B" nella console

Risposte:


9

La linea problematica nel tuo .pythonstartupè qualcosa di simile:

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

Questo .pythonstartuplo risolverà ...

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")

che ha risolto lo stesso problema per me!
zmo,

+1 Ho appena installato Python da homebrew ieri e ho riscontrato questo problema questa mattina. Aggiornato il mio file di avvio di Python e tutto è di nuovo buono. È un effetto collaterale molto specifico (ed estremamente strano).
Seth

2

Innanzitutto, ciò non è accaduto fino a quando non ho aggiornato Python da 2.7.1 a 2.7.3. Detto questo, la correzione è sulla linea:

vecchia linea:

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

nuova linea:

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

Il codice completo nel mio ~ / .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

Ho lo stesso problema. Questo accade quando si utilizza la versione MacPorts di Python in Snow Leopard.

Non vedo questo problema in Python di Apple fornito con Mac OS X. Quindi, la soluzione alternativa dovrebbe essere quella di impostare il PYTHONPATHpuntamento ai pacchetti di MacPorts:

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

(o una versione diversa di Python) e usa Python di Apple.


1

Sfortunatamente, la soluzione non è saggia.

Apple presume che la sua versione rimanga invariata quando si eseguono aggiornamenti e altre funzioni. Invece, se si desidera aggiornare Python o espanderlo, si consiglia di installare una versione locale, nella /optcartella principale o nella cartella principale.

Ho anche lo stesso problema e non utilizzo la versione di Python per MacPorts.


Sto usando l'ultima versione di vpythonVisual Python da www.vpython.org su Mac OX X Lion in esecuzione sull'ultimo MacBook Air (generazione 3).

Ho installato vpython usando il loro ultimo binario e usando le loro istruzioni. Viene fornito con un programma di installazione, quindi è punta e clicca. Questa è una versione modificata di Python 2.7.1. È la versione a 32 bit. (Credo che non lo abbiano portato a 64 bit). Ho quindi installato VPython-Mac-Py2.7-5.71. L'ho seguito da scipy da www.scipy.org e matplotlib da matplotlib.sourceforge.net Tutte queste installazioni usano un programma di installazione.

Quando eseguo python dal loro strumento di sviluppo, inattivo o dalla variante vpython, vidle, non ho problemi. Se apro un terminale ed eseguo Python da una shell bash, la shell non riconoscerà il tasto "b" sulla tastiera. Ti darà un suono di "campana", invece di digitare il "carattere b". Tuttavia, puoi inserire la lettera 'B'. Sembra che questa chiave sia mappata su un "carattere" non visualizzato errato, possibilmente il carattere "campana" nel vecchio codice ASCII.

Ho provato a cambiare l'emulazione in xterm, vt100, vt102. Ho anche giocato con diversi schemi di codifica come solo usando UTF-8. Ho anche premuto diverse combinazioni di tasti speciali come command-b ecc. Niente ha funzionato.

La mia unica soluzione è scrivere script in idle o vidle.

Spero che questo aiuti a chiarire il problema.


Ho lavorato un po 'di più su questo ... sembra che altri abbiano problemi simili con altre interfacce Python. Nel mio sistema ho un file .pythonrc.py che viene analizzato all'avvio di python (indicato da PYTHONSTARTUP). In questo file vengono caricati due moduli rlcompleter e readline. Quindi chiama readline.parse_and_bind ("bind -v"). Questa chiamata inizializza il modulo readline copiando i collegamenti dalla shell (puoi vedere i tuoi andando nella shell bash e digitando 'bind -v' (senza virgolette)). Uno di questi deve creare il problema. Se commento la riga (posto # davanti ad essa.), Il problema scompare.
ga mercier,

1
Puoi modificare il tuo post per includerlo, potrebbe semplificare la lettura.
slhck,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.