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 .