11

После запуска 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)
>>> [~]: 

3 ответа3

12

Существует открытая ошибка в MacPorts по этому вопросу:

https://trac.macports.org/ticket/48807

В нем говорится, что установка python с опцией «+readline» решает проблему, которую я сам проверил.

sudo port uninstall python27
sudo port install python27 +readline
8

Режимы терминала устанавливаются вашим приложением на raw или cbreak, а при ненормальном выходе режимы не восстанавливаются. В частности, функция, которая отображает клавишу Enter (control/M aka возврат каретки) на новую строку (control/J aka перевод строки), часто отключается в этом случае. Вы можете решить проблему с возвратами, введя

stty sane

с последующим контролем J

Это, по крайней мере, позволит вам снова вводить команды, хотя символы редактирования, такие как backspace, могут не назначаться их обычным функциям.

Некоторые могут также посоветовать использовать команду reset , но данные симптомы не имеют отношения к тому, что делает эта программа.

Для дальнейшего чтения

1

Это сработало для меня (с использованием OSX и pyenv):

CFLAGS="-I$(brew --prefix readline)/include -I$(brew --prefix openssl)/include -I$(xcrun --show-sdk-path)/usr/include" \
LDFLAGS="-L$(brew --prefix readline)/lib -L$(brew --prefix openssl)/lib" \
PYTHON_CONFIGURE_OPTS=--enable-unicode=ucs2 \
pyenv install -v 2.7.11

Источник: https://medium.com/@pimterry/setting-up-pyenv-on-os-x-with-homebrew-56c7541fd331#.urbdkrc9l

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .