El problema
Simplemente abriendo y cerrando el sub-shell de Python, arruina mi shell (¿o posiblemente el terminal?). Parece que se elimina la capacidad del shell para imprimir cualquier texto que ingrese, incluidas las nuevas líneas después de ingresar un comando.
El problema se produce para python3.4, python2.7 y python2.6, pero no para python2.5.
Nunca antes había ocurrido (como he notado), y no sucede con otros paquetes de software que he usado (VIM, Emacs, etc.).
He confirmado que se rompe con el Terminal estándar de Apple (versión 2.2.3 [303.2]), iTerm2 (compilación 2.1.1) y XTerm (269).
Curiosamente, se rompe en bash
, pero no en zsh
o csh
.
Ejemplo de comportamiento
Para demostrar, hago lo siguiente ( $SHELL
es /bin/bash
):
- Ejecutar
which python3.4
. - Ejecutar
python3.4
. - Presione la tecla Retorno una vez, luego ingrese
exit()
en el shell de Python. - Presiona Retorno dos veces más.
- Introduce
python3.4 --version
.
Esto es lo que veo en algunas de las versiones principales de Python que he instalado:
Python3.4 - problemático
myself@localhost:~$ which python3.4
python3.4 is /opt/local/bin/python3.4
python3.4 is /opt/local/bin/python3.4
myself@localhost:~$ python3.4
Python 3.4.3 (default, Aug 24 2015, 17:25:38)
[GCC 4.2.1 Compatible Apple Clang 3.0 (tags/Apple/clang-211.12)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> exit()
>>> myself@localhost:~$ myself@localhost:~$ myself@localhost:~$ Python 3.4.3
myself@localhost:~$
Python2.7 - problemático
myself@localhost:~$ which python2.7
python2.7 is /opt/local/bin/python2.7
python2.7 is /usr/local/bin/python2.7
python2.7 is /usr/bin/python2.7
python2.7 is /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
python2.7 is /usr/bin/python2.7
python2.7 is /usr/local/bin/python2.7
python2.7 is /opt/local/bin/python2.7
myself@localhost:~$ python2.7
Python 2.7.10 (default, Aug 24 2015, 11:54:49)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> exit()
>>> myself@localhost:~$ myself@localhost:~$ myself@localhost:~$ Python 2.7.10
myself@localhost:~$
Python2.6 - problemático
myself@localhost:~$ which python2.6
python2.6 is /opt/local/bin/python2.6
python2.6 is /usr/bin/python2.6
python2.6 is /usr/bin/python2.6
python2.6 is /opt/local/bin/python2.6
myself@localhost:~$ python2.6
Python 2.6.9 (unknown, Aug 24 2015, 17:53:21)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> exit()
>>> myself@localhost:~$ myself@localhost:~$ myself@localhost:~$ Python 2.6.9
myself@localhost:~$
Python2.5 - ¡Funciona!
myself@localhost:~$ which python2.5
python2.5 is /usr/bin/python2.5
python2.5 is /usr/bin/python2.5
myself@localhost:~$ python2.5
Python 2.5.6 (r256:88840, Jul 31 2011, 19:30:45)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> exit()
myself@localhost:~$
myself@localhost:~$
myself@localhost:~$ python2.5 --version
Python 2.5.6
myself@localhost:~$
Ejecutarlo en zsh
o csh
parece funcionar bien:
Zsh
myself@localhost:~$ zsh
localhost% which python3.4
/opt/local/bin/python3.4
localhost%
localhost% python3.4
Python 3.4.3 (default, Aug 24 2015, 17:25:38)
[GCC 4.2.1 Compatible Apple Clang 3.0 (tags/Apple/clang-211.12)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> exit()
>>> %
ra%
ra%
ra% python3.4 --version
Python 3.4.3
localhost% exit
myself@localhost:~$
Csh
myself@localhost:~$ csh
Running csh
[localhost:~] myself% which python3.4
/opt/local/bin/python3.4
[localhost:~] myself% python3.4
Python 3.4.3 (default, Aug 24 2015, 17:25:38)
[GCC 4.2.1 Compatible Apple Clang 3.0 (tags/Apple/clang-211.12)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> exit()
>>> [localhost:~] myself%
[localhost:~] myself%
[localhost:~] myself% python3.4 --version
Python 3.4.3
[localhost:~] myself% exit
exit
Mi pensamiento hasta ahora:
El hecho de que el comportamiento sea el mismo para tres terminales me hace pensar que no es un problema de terminal.
El hecho de que funcione en Zsh y Csh pero no en Bash me hace pensar que es un problema de shell.
El hecho de que las versiones que se rompen (3.4, 2.7, 2.6) estén todas instaladas en /opt/local/bin/
(ubicación de instalación habitual de MacPorts), pero la versión que funciona (2.5) está instalada en /usr/bin/
, me pregunto si ¡Es posible que alguna actualización reciente de MacPorts (tal vez hasta 20 días antes del 24 de agosto de 2015) haya roto algo que haga que Python y Bash no funcionen juntos!