No se puede escribir la letra "b" en Python Shell en OS X

8

Tengo un problema con mi letra "b" en Python shell en OS X. No puedo escribir "b", pero "B" funcionó bien.

¿Cómo puedo resolver este problema?

Sam
fuente
¿Qué quieres decir con "no se puede escribir"? ¿Algo físicamente le impide presionar la tecla b a menos que también presione Mayús? ¿O no hay ningún efecto al presionar el botón? ¿O aparece algún mensaje de error cuando la línea contiene solo "b"?
Joachim Sauer
¿Qué es exactamente ? ¿Qué está haciendo / escribiendo exactamente, qué sucede exactamente y cuál es exactamente el mensaje de error (si hay alguno)?
Si no hay otras letras afectadas, suena como un problema de hardware con su teclado y debe migrarse a Superusuario.
pavium
Cuando presiono la letra "b" no tengo ningún efecto y no escribo la letra "b" pero cuando presiono la letra "B" (Shift + b), luego escribo la letra "B" en la consola
2
Ver también esta pregunta .
Keith Thompson

Respuestas:

9

La línea problemática en su .pythonstartupes algo como:

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

Esto .pythonstartuplo arreglará ...

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
fuente
eso resolvió el mismo problema para mí!
zmo
+1 Ayer instalé Python desde homebrew y me encontré con este problema esta mañana. Actualicé mi archivo de inicio de Python y todo vuelve a estar bien. Es un efecto secundario muy específico (y extremadamente extraño).
Seth
2

Primero, esto no sucedió hasta que actualicé Python 2.7.1 a 2.7.3. Dicho esto, la solución está en juego:

línea antigua:

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

nueva línea:

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

El código completo en mi ~ / .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
GodOfWare
fuente
1

Tengo el mismo problema. Esto sucede cuando usa la versión MacPorts de Python en Snow Leopard.

No veo este problema en Python de Apple que viene con Mac OS X. Por lo tanto, la solución debería ser PYTHONPATHapuntar a los paquetes de MacPorts:

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

(o una versión diferente de Python) y use Python de Apple.

slhck
fuente
1

Desafortunadamente, la solución no es acertada.

Apple supone que su versión no cambia cuando se realizan actualizaciones y otras funciones. En cambio, se recomienda que si desea actualizar Python o expandirlo, instale una versión local, ya sea bajo /opto en su carpeta de inicio.

También tengo el mismo problema y no uso la versión MacPorts de python.


Estoy usando la última versión de vpython , visual python, de www.vpython.org en Mac OX X Lion que se ejecuta en la última MacBook Air (generación 3).

Instalé vpython usando su último binario y sus instrucciones. Viene con un instalador, por lo que es apuntar y hacer clic. Esta es una versión modificada de Python 2.7.1. Es la versión de 32 bits. (Creo que no lo han portado a 64 bits). Luego instalé VPython-Mac-Py2.7-5.71. Seguí esto por scipy de www.scipy.org y matplotlib de matplotlib.sourceforge.net Todas estas instalaciones usan un instalador.

Cuando ejecuto python desde su herramienta de desarrollo, inactivo, o la variante vpython, vidle, no tengo problemas. Si abro una terminal y ejecuto Python desde un shell bash, el shell no reconocerá la tecla "b" en el teclado. Le dará un sonido de "campana", en lugar de escribir el "carácter b". Sin embargo, puede ingresar la letra 'B'. Parece que esta tecla está asignada a algún 'carácter' incorrecto no mostrado, posiblemente el carácter 'campana' en el código ASCII antiguo.

Intenté cambiar la emulación a xterm, vt100, vt102. También jugué con diferentes esquemas de codificación, como usar UTF-8. También presioné una combinación diferente de teclas especiales como command-b, etc. Nada funcionó.

Mi única solución es escribir scripts en inactivo o vidle.

Espero que esto ayude a aclarar el problema.

ga mercier
fuente
Trabajé un poco más en esto ... parece que otros tienen problemas similares con otras interfaces de Python. En mi sistema tengo un archivo .pythonrc.py que se analiza cuando se inicia Python (señalado por PYTHONSTARTUP). En este archivo se cargan dos módulos rlcompleter y readline. Luego llama a readline.parse_and_bind ("bind -v"). Esta llamada inicia el módulo readline copiando los enlaces del shell (puede ver el suyo yendo al bash shell y escribiendo 'bind -v' (sin comillas)). Uno de estos debe crear el problema. Si comento la línea (coloque # delante de ella), el problema desaparece.
ga mercier 01 de
1
Puede editar su publicación para incluir eso, podría facilitar su lectura.
slhck