После запуска python repl (2.7.10) в терминале os-x и выхода из него терминал больше не выводит ввод с клавиатуры, и происходят некоторые другие странные вещи. Если я python
снова запускаю и exit()
, то, кажется, терминал восстанавливается. Теперь я просто закрываю вкладку и открываю новую, так что я не проверял это подробно.
Я думаю, это связано с настройками терминала, но это недавняя вещь, и я ничего не изменил, что я помню. Python устанавливается macports
, если есть какое-то отношение к несовпадающим зависимостям с какой-либо консольной библиотекой. 2.7.10 была установлена некоторое время назад, а после установки этого не произошло.
Трескает костяшки и открываетterminal
[~]: 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`
Кроме того, снова запустив python и получив ctrl-d
результаты, вы получите:
>>> ^D (ctrl-d, then hit enter, doesn't exit)
>>> ^D (...)
>>> ^D (...)
>>> exit() (typing exit() quits the session)
>>> [~]:
python
а затемctrl-d
Ответы:
Существует открытая ошибка в MacPorts по этому вопросу:
https://trac.macports.org/ticket/48807
В нем говорится, что установка python с опцией «+ readline» решает проблему, которую я сам проверил.
источник
sudo port selfupdate && sudo port clean python27 && sudo port install python27 +readline
. Если ваше локальное дерево устарело, у него не будет варианта + readline; этоselfupdate
исправит.Режимы терминала устанавливаются вашим приложением на raw или cbreak, и при ненормальном выходе режимы не восстанавливаются. В частности, функция, которая отображает Enterключ (control / M aka возврат каретки) на новую строку (control / J aka перевод строки), часто отключается в этом случае. Вы можете решить проблему с возвратами, введя
с последующим controlJ
Это, по крайней мере, позволит вам снова вводить команды, хотя символы редактирования, такие как, backspaceмогут не назначаться их обычным функциям.
Некоторые могут также посоветовать использовать
reset
команду, но указанные симптомы не имеют отношения к тому, что делает эта программа.Для дальнейшего чтения
stty
страница руководства - GNUисточник
stty echo
кажется, чтобы решить проблему ( stackoverflow.com/questions/32475928/python3-messes-up-terminal ). Не уверен, что обо всем позаботится. Я думаю, что-то не так с моим питоном, поскольку синтаксические ошибки требуют, чтобы я вручную нажимал на новую строку, чтобы начать ввод новой команды, и это не должно быть так.Это сработало для меня (с использованием OSX и pyenv):
Источник: https://medium.com/@pimterry/setting-up-pyenv-on-os-x-with-homebrew-56c7541fd331#.urbdkrc9l
источник