Después de ejecutar una respuesta de Python (2.7.10) en el terminal os-x y salir, el terminal ya no hace eco de la entrada escrita y ocurren otras cosas extrañas. Si corro de python
nuevo y exit()
, entonces, la terminal parece estar restaurada. Ahora solo cierro la pestaña y abro una nueva, así que no lo he probado exhaustivamente.
Supongo que esto está relacionado con la configuración del terminal, pero es algo reciente y no he cambiado nada de lo que recuerdo. Python se instala con macports
, si hay algo que ver con dependencias mal emparejadas con alguna biblioteca de consola. 2.7.10 se instaló hace un tiempo, y esto no sucedió después de la instalación.
Rompe nudillos y se abreterminal
[~]: virtualenv-2.7 venv-test
[~]: source venv-test/bin/activate
[~]: python
>>> ^D>>> *(press ctrl-d, the 2nd >>> is strange)
[~]: *(type something like `ls-l`, nothing shows on console)
[~]: -bash: ls-l: command not found`
Además, ejecutar Python nuevamente y obtener ctrl-d
resultados en esta salida:
>>> ^D (ctrl-d, then hit enter, doesn't exit)
>>> ^D (...)
>>> ^D (...)
>>> exit() (typing exit() quits the session)
>>> [~]:
python
y luegoctrl-d
Respuestas:
Hay un error abierto en MacPorts sobre este tema:
https://trac.macports.org/ticket/48807
Dice que instalar Python con la opción "+ readline" soluciona el problema, que verifiqué haciéndolo yo mismo.
fuente
sudo port selfupdate && sudo port clean python27 && sudo port install python27 +readline
. Si su árbol local está desactualizado, entonces no tendrá disponible la variante + readline; Elselfupdate
lo arreglará.La aplicación establece los modos de terminal en raw o cbreak, y cuando sale anormalmente, los modos no se restauran. En particular, la función que asigna la Enterclave (control / M también conocido como retorno de carro) a nueva línea (control / J también conocido como avance de línea) a menudo se desactiva en este caso. Puede solucionar el problema con las devoluciones ingresando
seguido por controlJ
Eso al menos le permitirá ingresar comandos nuevamente, aunque los caracteres de edición como los que backspaceno se pueden asignar a sus funciones habituales.
Algunos también pueden recomendar el uso del
reset
comando, pero los síntomas dados no son relevantes para lo que hace ese programa.Para leer más
stty
página de manual es GNUfuente
stty echo
parece solucionar el problema ( stackoverflow.com/questions/32475928/python3-messes-up-terminal ). No estoy seguro si se encarga de todo. Creo que algunas cosas están un poco mal con mi python, ya que los errores de sintaxis requieren que presione manualmente nueva línea para comenzar a ingresar un nuevo comando, y no debería ser así.Esto funcionó para mí (usando OSX y pyenv):
Fuente: https://medium.com/@pimterry/setting-up-pyenv-on-os-x-with-homebrew-56c7541fd331#.urbdkrc9l
fuente