Cómo salir de Windows Python en Cygwin


3

He instalado Python con los binarios de Windows, así que necesito escribir python -ipara iniciar Python en Cygwin. Y cuando salgo, necesito escribir exit(). Es solo un problema menor, pero aún me gustaría saber si es posible solucionarlo para poder salir usando Ctrl+Zcomo hago cuando ejecuto Python encmd


Intenta usar Ctrl-Dpara salir en su lugar.
MattDMo

Ya lo probé, y tampoco funciona
starcorn

Respuestas:


1

El problema aquí es la diferencia entre los emuladores de terminal Cygwin (MinTTY, etc.), que intentan actuar como terminales Linux en beneficio de las aplicaciones nativas de Cygwin, y el emulador de terminal cmd de Windows. Debido a que MinTTY maneja las señales de manera diferente, no pasará Ctrl+ Zcomo una señal EOF a Windows Python, mientras que Windows Python no maneja el Ctrl+ D.

La solución es seguir usando Windows Python en emuladores de terminal de Windows (es decir, el emulador de terminal cmd, que es el mismo que obtienes si inicias Windows Python desde el menú Inicio o similar), e instalar Cygwin Python y usarlo desde Emuladores de terminal Cygwin. De esa manera, cada uno recibirá y manejará las señales relevantes correctamente.


1

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 pythonactual ${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.exeal iniciar el shell (por ejemplo, in ~/.bashrc). Por ejemplo:

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

¿Qué tiene de malo python -io cmd.exe, Chummer?

Al espiar otra recomendación bien intencionada para ejecutar Windows Python a través python -ide 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 -idesde 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 pythondesde 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 cygstarttodos 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 cygstartel 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 cygstartcomando.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.