Usando python avvita la shell (e / o il terminale?)!

7

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 ):

  1. Esegui which python3.4 .
  2. Esegui python3.4 .
  3. Premi una volta il tasto Invio, quindi inserisci exit() nella shell Python.
  4. Premi Invio altre due volte.
  5. 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!

    
posta jvriesem 21.09.2015 - 20:14
fonte

1 risposta

10

Sembra che ci sia un problema con le build recenti di Macports di python vedi questo bug

Una soluzione alternativa è installare pyXX-readline (py35-readline è stato prodotto solo per questo bug)

Un altro è installare python aggiungendo la variante + readline

    
risposta data 23.09.2015 - 20:07
fonte

Leggi altre domande sui tag