Para ejecutar Windows Python desde Cygwin, haga siempre esto:
$ cygstart python
Nunca hagas esto:
$ python -i
Esto se extiende también a Windows IPython. Siempre haz esto:
$ cygstart ipython
Nunca hagas esto:
$ ipython -i
Antes de llegar a por qué, sin embargo, hablemos ${PATH}
.
Python y ${Path}
: ¡Juntos por fin!
La respuesta anterior supone que la versión python
actual ${PATH}
de Windows es la versión nativa de Python instalada por Cygwin. Si este último es el caso, se debe pasar explícitamente la ruta absoluta de su Windows Python cygstart
. Por ejemplo:
$ cygstart /cygdrive/c/Miniconda3/python.exe
Si ejecuta Windows Python con alguna apariencia de frecuencia, es probable que desee que sea definitivo python
. Si instaló una distribución popular de Python (por ejemplo, Anaconda, Miniconda, Enthought Canopy), esto significa que usted. Para hacerlo, anteponga ${PATH}
la ruta absoluta del directorio que contiene python.exe
al iniciar el shell (por ejemplo, in ~/.bashrc
). Por ejemplo:
# Stash this somewhere.
export PATH="/cygdrive/c/Miniconda3:${PATH}"
¿Qué tiene de malo python -i
o cmd.exe
, Chummer?
Al espiar otra recomendación bien intencionada para ejecutar Windows Python a través python -i
de Cygwin o python
desde un terminal que no sea Cygwin, solo sacudo la cabeza.
No. No. No. En ambos casos, lo estás haciendo mal.
En el caso de que se ejecute python -i
desde Cygwin, se pierden las cuerdas del teclado (p. Ej., < Arriba > y < Abajo > para recorrer el historial REPL, < Ctrl-D > para finalizar el REPL) y, quizás lo más importante, el almacenamiento en búfer de salida.
En el caso de ejecutarse python
desde un terminal que no sea Cygwin, pierde Cygwin. Usas Cygwin por una razón, presumiblemente porque prefieres la compatibilidad POSIX y todo lo que conlleva (por ejemplo, un shell sano) a la alternativa convencional de Windows.
De cygstart
todos modos, ¿qué es tan bueno fumar ?
No hay razón para dejar caer a Cygwin. Sin embargo, hay muchas razones para ejecutar una aplicación nativa de Windows y, por lo tanto, Windows Python desde Cygwin como un proceso nativo de Windows en lugar de un proceso Cygwin compatible con POSIX. Que no lo es.
Introduzca cygstart
.
Esta utilidad estándar de Cygwin está sobrecargada (bastante confusamente) para interactuar en una variedad de formas marginalmente interesantes con aplicaciones, rutas y URI nativos de Windows. Para nuestro propósito, pasar cygstart
el nombre de un comando en el actual ${PATH}
ejecuta ese comando como un proceso nativo de Windows, preservando la sintaxis y la semántica del shell de Windows en presencia de Cygwin.
tl; dr
Las aplicaciones nativas de Windows, incluidas Windows Python e IPython, siempre deben ejecutarse desde Cygwin mediante el cygstart
comando.
Ctrl-D
para salir en su lugar.