Après avoir exécuté une repl python (2.7.10) dans le terminal os-x et quitté, le terminal ne fait plus d'écho d'entrée de type et d'autres choses étranges se produisent. Si je lance à python
nouveau et exit()
, alors le terminal semble être restauré. Je ferme maintenant l'onglet et j'en ouvre un nouveau, donc je n'ai pas testé cela intensivement.
Je suppose que cela est lié aux paramètres du terminal, mais c'est une chose récente et je n'ai rien changé dont je me souvienne. Python est installé avec macports
, s'il y a quelque chose à voir avec des dépendances mal appariées avec une bibliothèque de console. 2.7.10 a été installé il y a quelque temps, et cela ne s'est pas produit après l'installation.
Se fissure les articulations et s'ouvreterminal
[~]: virtualenv-2.7 venv-test
[~]: source venv-test/bin/activate
[~]: python
>>> ^D>>> *(press ctrl-d, the 2nd >>> is strange)
[~]: *(type something like `ls-l`, nothing shows on console)
[~]: -bash: ls-l: command not found`
De plus, l'exécution de python à nouveau et la frappe ctrl-d
aboutissent à cette sortie:
>>> ^D (ctrl-d, then hit enter, doesn't exit)
>>> ^D (...)
>>> ^D (...)
>>> exit() (typing exit() quits the session)
>>> [~]:
python
puisctrl-d
Réponses:
Il y a un bogue ouvert dans MacPorts sur ce problème:
https://trac.macports.org/ticket/48807
Il indique que l'installation de python avec l'option "+ readline" résout le problème, que j'ai vérifié en le faisant moi-même.
la source
sudo port selfupdate && sudo port clean python27 && sudo port install python27 +readline
. Si votre arborescence locale est obsolète, la variante + readline ne sera pas disponible; leselfupdate
résoudra cela.Les modes du terminal sont définis par votre application sur raw ou cbreak, et en cas de sortie anormale, les modes ne sont pas restaurés. En particulier, la fonctionnalité qui mappe la Enterclé (control / M aka retour chariot) à la nouvelle ligne (control / J aka line feed) est souvent désactivée dans ce cas. Vous pouvez résoudre le problème des retours en entrant
suivi par controlJ
Cela vous permettra au moins de saisir à nouveau des commandes, bien que les caractères d'édition tels que ceux backspacequi ne sont pas affectés à leurs fonctions habituelles.
Certains peuvent également conseiller d'utiliser la
reset
commande, mais les symptômes donnés ne sont pas pertinents pour ce que fait ce programme.Pour plus de lecture
stty
page de manuel est GNUla source
stty echo
semble résoudre le problème ( stackoverflow.com/questions/32475928/python3-messes-up-terminal ). Je ne sais pas s'il s'occupe de tout. Je pense que quelque chose ne va pas avec mon python, car les erreurs de syntaxe m'obligent à frapper manuellement la nouvelle ligne pour commencer à entrer une nouvelle commande, et cela ne devrait pas être ainsi.Cela a fonctionné pour moi (en utilisant OSX et pyenv):
Source: https://medium.com/@pimterry/setting-up-pyenv-on-os-x-with-homebrew-56c7541fd331#.urbdkrc9l
la source