2015-10-08 23 views
8

Ogni volta che ho eseguito python o python3 con una console interattiva, la visualizzazione del prompt viene fuori sincronia quasi subito dopo la prima o la seconda interazione:La visualizzazione terminale dell'ingresso non è sincronizzata mentre/dopo si utilizza python? (Temporanea correzione = `reset`)

>>> [1,2,3] 
>>> [1, 2, 3] 
print('hi') 
>>> hi 

Poi, quando esco da Python, questo comportamento si porta su bash, con l'aggiunta che quando si digita, sullo schermo non appare nulla, ma verrà comunque eseguito. Nel seguente esempio, ho digitato date e poi history | tail -n3:

$ Thu Oct 8 07:55:47 CEST 2015 
$ 488 python 
    489 date 
    490 history | tail -n3 

Tuttavia, dopo aver digitato reset, tutto torna alla normalità.

Inutile dire che questo comportamento è molto fastidioso. Qual è la causa e come posso risolverlo?

Sono su OS X. Utilizzando iTerm o Terminal.app integrato entrambi danno lo stesso comportamento. I miei build di pitone sono da macports. Questo problema non è presente con /usr/bin/python (python 2.7.2, incluso con OS X).

============================

Edit: Se io uso zsh, quindi Python ha ancora problemi , ma tutto funziona bene in zsh dopo che esco da Python.

$TERM è xterm-256color in entrambi bash e zsh.

+1

Probabilmente il vostro python che emette i caratteri di controllo e che cambia la configurazione del terminale. Potrebbe essere nel banner di pitone. Puoi provare a 's = $ (stty -g)' prima di avviare python e 'stty $ s' dopo, per salvare e ripristinare la configurazione del terminale. Ma non ti sarà d'aiuto durante la tua sessione interattiva python ... –

+1

come esci da Python? –

+1

@ ÁlvaroGutiérrez Ho provato a uscire con ctrl + D e 'exit()' ed entrambi producono lo stesso risultato. – reynoldsnlp

risposta

1

Come nella mia risposta a AskDifferent c'era un bug nella recente pitone costruisce sotto MacPorts quando la questione è stato scritto a causa di questo Macports bug in quanto non era compresa readline (per motivi di licenza)

Questo ora è stato fissato dal fare una variante + readline e renderla predefinita

0

Basta provare il comando stty sane nella shell. Mi aiuta sempre.

1

@ Mark ha la spiegazione.

Per quanto riguarda la correzione:

port selfupdate 
# port install python(26|27|34|35) +readline 
port install python27 +readline