Como sair do Windows Python no Cygwin

3

Instalei o Python com os binários do Windows, portanto, preciso digitar python -i para iniciar o Python no Cygwin. E quando eu sair, preciso escrever exit() . É apenas um problema menor, mas eu ainda gostaria de saber se é possível corrigi-lo para que eu possa sair usando Ctrl+Z como eu faço quando eu executo o Python em cmd

    
por starcorn 29.03.2013 / 01:53

2 respostas

1

O problema aqui é a diferença entre os emuladores de terminal Cygwin (MinTTY etc), que tentam agir como terminais Linux para o benefício dos aplicativos nativos do Cygwin, e o emulador de terminal cmd do Windows. Como o MinTTY lida com sinais de maneira diferente, ele não passará de Ctrl + Z como um sinal EOF para o Windows Python, enquanto Ctrl + D não é tratado pelo Windows Python.

A solução é usar o Windows Python em emuladores de terminal do Windows (ou seja, o cmd terminal emulator, que é o mesmo que você obtém se iniciar o Windows Python pelo menu Iniciar ou similar) e instalar o Cygwin Python e use isso de emuladores de terminal Cygwin. Dessa forma, cada um receberá e manipulará os sinais relevantes corretamente.

    
por 02.04.2013 / 20:33
1

Para executar o Windows Python a partir do Cygwin, sempre faça isso:

$ cygstart python

Nunca faça isso:

$ python -i

Isso também se aplica ao Windows IPython. Sempre faça isso:

$ cygstart ipython

Nunca faça isso:

$ ipython -i

Antes de entendermos o porquê, vamos falar sobre ${PATH} .

Python e ${Path} : juntos no fim!

A resposta acima assume que o python do seu atual ${PATH} é o Windows nativo, e não a versão do Python instalada pelo Cygwin. Se este for o caso, o caminho absoluto do seu Windows Python deve ser passado explicitamente para cygstart . Por exemplo:

$ cygstart /cygdrive/c/Miniconda3/python.exe

Se você executar o Windows Python com alguma semelhança de frequência, provavelmente desejará tornar esse seu definitivo python . Se você instalou uma distribuição popular do Python (por exemplo, Anaconda, Miniconda, Enthought Canopy), isso significa que você. Para isso, prefixar ${PATH} pelo caminho absoluto do diretório que contém python.exe na inicialização do shell (por exemplo, em ~/.bashrc ). Por exemplo:

# Stash this somewhere.
export PATH="/cygdrive/c/Miniconda3:${PATH}"

O que há de errado com python -i ou cmd.exe , Chummer?

Ao espiar ainda outra recomendação bem intencionada para executar o Windows Python via python -i de dentro do Cygwin ou python de dentro de um terminal que não seja o Cygwin, balancei a cabeça apenas.

Não. Não. Não. Em ambos os casos, você está fazendo errado.

No caso de executar python -i de dentro do Cygwin, você perde as ligações sãs do teclado (por exemplo, > e < Down > para ciclo através do histórico do REPL, < Ctrl-D > para terminar o REPL) e, talvez mais importante, o buffer de saída.

No caso de rodar python dentro de um terminal que não seja o Cygwin, você perde o Cygwin. Você usa o Cygwin por um motivo - presumivelmente porque você prefere a compatibilidade com POSIX e tudo o que envolve (por exemplo, um shell sã) para a alternativa convencional do Windows.

O que há de tão quente em fumar cygstart , afinal?

Não há razão para abandonar o Cygwin. Existe, porém, uma razão para que, em vez disso, seja executada uma aplicação nativa do Windows e, portanto, o Windows Python, a partir do Cygwin, como um processo nativo do Windows, e não como um processo Cygwin compatível com POSIX. O que não é.

Insira cygstart .

Este utilitário padrão do Cygwin é (bastante confuso) sobrecarregado para interagir de diversas maneiras marginalmente interessantes com aplicativos nativos do Windows , caminhos e URIs. Para o nosso propósito, passar cygstart o nome de um comando no comando ${PATH} é executado como um processo nativo do Windows, preservando a sintaxe e a semântica do shell do Windows na presença do Cygwin.

tl; dr

Aplicativos nativos do Windows - incluindo o Windows Python e o IPython - devem sempre ser executados no Cygwin por meio do comando cygstart .

    
por 12.08.2015 / 06:51

Tags