Historial de modo interactivo de Python y teclas de flecha

Me preguntaba si alguien puede explicar por qué, de repente, en el modo interactivo de Python, todas las teclas de flecha están fallando.

Cuando presiono el botón arriba, por ejemplo, para pasar por el historial de comandos, obtengo “^ [[A”. Lo mismo con cualquier otra tecla de flecha.

No tengo idea de por qué sucedió esto y funcionó antes (en OS X Snow Leopard). ¿Alguien sabe una manera de arreglar esto?

Muchas gracias,

sol

No dices qué Python estás usando, pero los síntomas que mencionas en realidad son causados ​​porque Python no se construye con el soporte de readline . En estos días, Python en OS X puede construirse para usar la biblioteca de línea de editline GNU o la biblioteca de línea de editline suministrada por editline (AKA libedit ). Puede usar los siguientes dos comandos para mostrar exactamente qué Python está usando. Si eso no te ayuda a descubrir qué está pasando, edita tu pregunta para mostrar el resultado de esos comandos.

Aquí hay un ejemplo que muestra un reciente MacPorts Python 2.6 en OS X 10.6:

 $ python -c 'import sys;print(sys.version);print(sys.executable)' 2.6.5 (r265:79063, Jul 15 2010, 01:53:46) [GCC 4.2.1 (Apple Inc. build 5659)] /opt/local/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python $ otool -L $(python -c 'import readline; print(readline.__file__)') /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/readline.so: /opt/local/lib/libreadline.6.1.dylib (compatibility version 6.0.0, current version 6.1.0) /opt/local/lib/libncursesw.5.dylib (compatibility version 5.0.0, current version 5.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0) 

La ruta prefijo /opt/local/ es la ubicación predeterminada para el software instalado por MacPorts y la salida de otool indica que este módulo de otool de otool Python está vinculado dinámicamente a la biblioteca de línea de readline GNU instalada por MacPorts.

Si está utilizando homebrew, esta es una solución fácil:

 elaborar cerveza desinstalar python
 brew desinstalar readline
 brew install readline --universal
 brew instalar python

Eso me lo arregló (ejecutando OS X Mavericks 10.9.5)

Finalmente conseguí este trabajo. Simplemente tuve que instalar readline con easy_install y los cursores y el retroceso comenzó a funcionar mágicamente.

 sudo /opt/local/bin/easy_install-2.5 readline 

Este comportamiento normalmente se muestra cuando no tiene soporte de readline . Si está utilizando MacPorts, intente port install readline , vea si lo solucionará. También puede ver esta página para más explicaciones.

(También es útil saberlo: algunos progtwigs no usan readline incluso si están presentes en el sistema. Puede forzarlos usando rlwrap ( port install rlwrap ). Por ejemplo: rlwrap ocaml -init code.ml iniciará OCaml, lea code.ml e inicie REPL con el soporte de readline)