Il problema
Semplicemente aprendo e chiudendo la sub-shell Python avvita la mia shell (o possibilmente il terminale?). Sembra che rimuova la capacità della shell di stampare qualsiasi testo che inserisco, incluse le newline dopo aver inserito un comando.
Il problema si verifica per python3.4, python2.7 e python2.6, ma non per python2.5.
Non si è mai verificato prima (che abbia notato), e non succede per altri pacchetti software che ho usato (VIM, Emacs, ecc.).
Ho confermato che si interrompe utilizzando il terminale standard di Apple (versione 2.2.3 [303.2]), iTerm2 (build 2.1.1) e XTerm (269).
È interessante notare che si rompe sotto bash
, ma non zsh
o csh
.
Comportamento di esempio
Per dimostrare, faccio quanto segue ( $SHELL
is /bin/bash
):
- Esegui
which python3.4
. - Esegui
python3.4
. - Premi una volta il tasto Invio, quindi inserisci
exit()
nella shell Python. - Premi Invio altre due volte.
- Inserisci
python3.4 --version
.
Ecco cosa vedo per alcune delle versioni principali di Python che ho installato:
Python3.4 - problematico
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 - problematico
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 - problematico
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 - Funziona!
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:~$
L'esecuzione in zsh
o csh
sembra funzionare correttamente:
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
Il mio pensiero fino ad ora:
Il fatto che il comportamento sembri lo stesso per tre terminali mi fa pensare che non si tratti di un problema terminale.
Il fatto che funzioni in Zsh e Csh ma non in Bash mi fa pensare che sia un problema di shell.
Il fatto che le versioni che si rompono (3.4, 2.7, 2.6) siano tutte installate sotto /opt/local/bin/
(posizione di installazione normale di MacPorts), ma la versione che funziona (2.5) è installata sotto /usr/bin/
, mi chiedo se alcuni recenti aggiornamenti MacPorts (spinti forse fino a 20 giorni prima del 24 agosto 2015 ??) potrebbero aver violato qualcosa che rende Python e Bash non funzionanti!