O terminal OS-X se comporta de maneira estranha após executar o Python interativamente

11

Depois de executar uma replicação do Python (2.7.10) no terminal os-x e sair, o terminal não digita mais a digitação e algumas outras coisas estranhas acontecem. Se eu executar python novamente e exit() , o terminal parece estar restaurado. Agora fecho a aba e abro uma nova, então não testei isso extensivamente.

Eu acho que isso está relacionado às configurações do terminal, mas é uma coisa recente e eu não mudei nada do que me lembro. O Python é instalado com macports , se houver algo a ver com dependências com correspondência incorreta em alguma biblioteca de console. 2.7.10 foi instalado há um tempo atrás, e isso não aconteceu após a instalação.

Rachaduras juntas e abre 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'

Além disso, a execução do python novamente e o resultado ctrl-d resultam nessa saída:

>>> ^D           (ctrl-d, then hit enter, doesn't exit)
>>> ^D           (...)
>>> ^D           (...)
>>> exit()       (typing exit() quits the session)
>>> [~]: 
    
por Andrew Backer 08.10.2015 / 09:19

3 respostas

12

Há um bug aberto no MacPorts sobre esse problema:

link

Ele diz que a instalação do python com a opção "+ readline" corrige o problema, que eu verifiquei fazendo isso sozinho.

sudo port uninstall python27
sudo port install python27 +readline
    
por 11.11.2015 / 19:52
7

Os modos de terminal são definidos pela sua aplicação para raw ou cbreak, e ao sair anormalmente os modos não são restaurados. Em particular, o recurso que mapeia a tecla Enter (controle / M aka retorno de carro) para nova linha (controle / feed de linha J aka) é freqüentemente desabilitado neste caso. Você pode corrigir o problema com retornos inserindo

stty sane

seguido por control J

Isso permitirá que você, pelo menos, insira comandos novamente, embora os caracteres de edição como backspace não possam ser atribuídos às suas funções habituais.

Alguns também podem aconselhar o uso do comando reset , mas os sintomas fornecidos não são relevantes para o programa.

Para ler mais

por 08.10.2015 / 10:17
1

Isso funcionou para mim (usando OSX e 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

Fonte:

    
por 03.01.2017 / 21:51