Il problema
Semplicemente aprendo e chiudendo la sotto-shell Python avvita la mia shell (o forse il terminale?). Sembra rimuovere la capacità della shell di stampare qualsiasi testo che inserisco, comprese le nuove righe dopo aver inserito un comando.
Il problema si verifica per python3.4, python2.7 e python2.6, ma non per python2.5.
Non è mai successo prima (che ho notato) e non succede per altri pacchetti software che ho usato (VIM, Emacs, ecc.).
Ho confermato che si rompe 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
.
Esempio di comportamento
Per dimostrare, faccio quanto segue ( $SHELL
è /bin/bash
):
- Corri
which python3.4
. - Corri
python3.4
. - Premi il tasto Invio una volta, quindi entra
exit()
nella shell Python. - Premi Ritorna altre due volte.
- Enter
python3.4 --version
.
Ecco cosa vedo per alcune delle versioni primarie 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:~$
Eseguendolo zsh
o csh
sembra funzionare bene:
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 finora:
Il fatto che il comportamento sembri lo stesso per tre terminali mi fa pensare che non sia 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 abituale di MacPorts), ma la versione che funziona (2.5) è installata sotto /usr/bin/
, mi chiedo se alcuni recenti aggiornamenti di MacPorts (spinti forse fino a 20 giorni prima del 24 agosto 2015 ??) potrebbe aver rotto qualcosa che impedisce a Python e Bash di funzionare insieme!
exit()
, quit()
o si control D
digita reset
al prompt (non verrà ripetuto l'eco al terminale) e attendere fino alla ricomparsa del prompt.