instalar - Usando Windows Python desde Cygwin
python download (3)
El problema real es que cuando ejecuta un comando en cualquiera de los programas de terminal de Cygwin como mintty, no actúan como consolas de Windows. Solo los basados en la Consola de Windows como CMD o Console2 hacen eso. Por lo tanto, con los terminales Cygwin, Windows python.exe no cree que esté hablando con una consola interactiva.
Eso lleva a un búfer de salida en lugar de vaciar buffers en cada línea como se hace en sesiones interactivas. Es por eso que Amro está agregando la descarga () en cada línea para corregir el síntoma, pero significa cambiar el código.
Una solución sin cambiar el código es desactivar el almacenamiento en búfer en Python usando la marca ''-u'' en la línea de comandos o configurando la variable de entorno PYTHONUNBUFFERED.
export PYTHONUNBUFFERED=1
/cydrive/c/Python27/python.exe foo.py
o
/cydrive/c/Python27/python.exe -u foo.py
o correr en modo interactivo
/cydrive/c/Python27/python.exe -i foo.py
Tampoco podrá ejecutar el modo interactivo de Windows python.exe en el terminal de Cygwin. No abrirá una sesión interactiva, sino que simplemente se colgará. Creo que la mejor solución parece ser usar ''cygstart'' (mejor que usar la opción ''-i''):
cygstart /cygdrive/c/Python27/python.exe
Y eso parece funcionar también con ipython (si está instalado):
cygstart /cygdrive/c/Python27/Scripts/ipython.exe
He estado usando Cygwin en Windows recientemente. Quiero usar la instalación de Python para Windows, así que durante las pruebas estoy usando /cygdrive/c/Python26/python.exe myfile.py
lugar de python myfile.exe
.
Esto está funcionando casi perfectamente, excepto para la impresión. Cuando ejecuto Windows Python desde Cygwin, la salida no se imprime hasta que finaliza la ejecución. Funciona bien ejecutándose en Windows Python desde explorer.exe o cmd.exe, y funciona en Cygwin utilizando Python instalado por Cygwin ( /bin/python.exe
).
¿Hay una solución para esto? Lo importante es poder ejecutar la versión de Windows, pero me gustaría hacerlo todo desde Bash.
No contesto la pregunta inicial, pero para aquellos que desean usar la sesión interactiva de Python desde el terminal de Cygwin (por ejemplo, en mintty) - inicie Python con la opción "-i" para decirle explícitamente que debe ejecutarse en modo interactivo:
$ python -i
La mejor manera también es crear un alias en su .bashrc (sabiendo que solo se lee para sesiones de terminal interactivas de todos modos):
alias python=''python -i''
De lo contrario, Python no sabrá que se ejecuta en la consola, porque todos los terminales basados en pty de Cygwin (mintty, rxvt y xterm) son reconocidos como tuberías por Windows, no como la consola. Por lo tanto, Python piensa que no hay consola y entra en modo no interactivo. Por lo tanto, si aún desea el modo interactivo, necesita decirle explícitamente a Python que lo use. Sin embargo, todavía no se comportará como debería, ya que uno no podrá usar las teclas de INICIO o de FLECHA IZQUIERDA, y así sucesivamente.
Tal vez si borras la salida
import sys
V = range(100000)
for x in V:
print x
sys.stdout.flush()