Depois de executar um python repl (2.7.10) no terminal os-x e sair, o terminal não faz mais eco da entrada digitada e outras coisas estranhas acontecem. Se eu correr python
novamente e exit()
, o terminal parece ter sido restaurado. Agora, apenas fecho a aba e abro uma nova, portanto não a testei extensivamente.
Acho que isso está relacionado às configurações do terminal, mas é uma coisa recente e não mudei nada do que me lembro. O Python é instalado com macports
, se houver algo a ver com dependências incompatíveis com alguma biblioteca de console. 2.7.10 foi instalado há um tempo atrás, e isso não aconteceu após a instalação.
Racha juntas e abreterminal
[~]: 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, executando o python novamente e atingindo os ctrl-d
resultados nesta saída:
>>> ^D (ctrl-d, then hit enter, doesn't exit)
>>> ^D (...)
>>> ^D (...)
>>> exit() (typing exit() quits the session)
>>> [~]:
python
e depoisctrl-d
Respostas:
Há um bug aberto no MacPorts sobre esse problema:
https://trac.macports.org/ticket/48807
Ele diz que a instalação do python com a opção "+ readline" corrige o problema, que eu verifiquei fazendo isso sozinho.
fonte
sudo port selfupdate && sudo port clean python27 && sudo port install python27 +readline
. Se sua árvore local estiver desatualizada, ela não terá a variante + linha de leitura disponível; oselfupdate
vai consertar isso.Os modos de terminal são definidos pelo seu aplicativo como brutos ou rupturas e, ao sair de forma anormal, os modos não são restaurados. Em particular, o recurso que mapeia a Enterchave (controle / M, também conhecido como retorno de carro) para a nova linha (controle / J, também conhecido como avanço de linha) geralmente é desativado nesse caso. Você pode corrigir o problema com devoluções digitando
Seguido por controlJ
Isso permitirá ao menos que você insira comandos novamente, embora os caracteres de edição, como os que backspacepodem não estar atribuídos às suas funções habituais.
Alguns também podem aconselhar o uso do
reset
comando, mas os sintomas apresentados não são relevantes para o que esse programa faz.Para leitura adicional
stty
página de manual é GNUfonte
stty echo
parece corrigir o problema ( stackoverflow.com/questions/32475928/python3-messes-up-terminal ). Não tenho certeza se ele cuida de tudo. Acho que há algo de errado com meu python, pois os erros de sintaxe exigem que eu pressione manualmente a nova linha para começar a digitar um novo comando, e não deve ser assim.Isso funcionou para mim (usando OSX e pyenv):
Fonte: https://medium.com/@pimterry/setting-up-pyenv-on-os-x-with-homebrew-56c7541fd331#.urbdkrc9l
fonte