Python no funciona en la línea de comando de git bash


236

Python no se ejecutará en git bash (Windows). Cuando escribo python en la línea de comando, me lleva a una línea en blanco sin decir que ha ingresado a python 2.7.10 como lo hace en Powershell. No me da un mensaje de error, pero Python simplemente no se ejecuta.

Ya me aseguré de incluir las variables ambientales en PATH c:\python27. ¿Qué más puedo consultar?


Una sesión en la que se produce este problema tiene el siguiente aspecto:

user@hostname MINGW64 ~
$ type python
python is /c/Python27/python

user@hostname MINGW64 ~
$ python

... sentado allí sin volver a la indicación.


2
"No pasa nada"? ¿Ni siquiera recibes un error? (Es decir: si recibe un mensaje de error, eso debería ser parte de su pregunta).
Charles Duffy

@recursive, bash respeta la RUTA. (Sin embargo, tiene su propia versión de esa variable).
Charles Duffy

11
No recibo un mensaje de error cuando escribo python. Simplemente me lleva a una línea en blanco, pero no muestra que Python esté funcionando realmente
Caroline Morris

44
@CharlesDuff, dejó en claro, Charles, que no hay mensajes de error. Bash simplemente se congela. Congelar un terminal es el mensaje de error.
Verde

1
@Green, como debería ser obvio por mi respuesta, ya no es un punto que carece de claridad, y no lo ha sido durante la mayor parte del año. Por otra parte, la cuestión no era tan claro en este punto, ya que es hasta ahora he editado a hacer es inequívoca sobre el punto siguiente comentario de la OP anteriormente en este hilo; revisa el historial.
Charles Duffy

Respuestas:


361

Simplemente ingrese esto en su shell git en windows -> alias python='winpty python.exe', eso es todo y tendrá un alias para el ejecutable de python. Disfrutar

PD Para la adición de alias permanente, ver más abajo,

cd ~
touch .bashrc

luego abra .bashrc, agregue su comando desde arriba y guarde el archivo. Necesita crear el archivo a través de la consola o no puede guardarlo con el nombre correcto. También debe reiniciar el shell para aplicar el cambio.


17
Funciona de maravilla.
Verde

44
Nota: Tendrá que usar la función Python quit()para escapar del intérprete.
anishpatel 01 de

55
También puede usar (el estándar de Windows) ^Z(ctrl-Z) + returnpara salir.
Emil Styrke

66
Además, si desea establecer el alias en una pitón 'diferente' que la de Windows, puede establecer una ruta completamente calificada utilizando la siguiente sintaxisalias python='winpty /c/Python27/python.exe'
ScottMcC

10
Esto podría ser lo mejor que he encontrado en Internet.
mdw7326

79

No veo la siguiente opción en una lista de respuestas, pero puedo obtener un mensaje interactivo con la tecla "-i":

$ python -i
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55)
Type "help", "copyright", "credits" or "license" for more information.
>>> 

-i argumento: cuando se pasa un script como primer argumento o se usa la opción -c, ingrese al modo interactivo después de ejecutar el script o el comando, incluso cuando sys.stdin no parece ser un terminal. El archivo PYTHONSTARTUP no se lee. docs.python.org/3/using/cmdline.html#cmdoption-i
Mercurio

¿Es esto más costoso que alias python = 'winpty python.exe' ?
PYK

1
Esta es la opción con un esfuerzo de configuración cero que funciona en cualquier computadora.
Vav

58

Este es un error conocido en MSys2, que proporciona el terminal utilizado por Git Bash. Puede solucionarlo ejecutando una compilación de Python sin compatibilidad con ncurses, o utilizando WinPTY , que se utiliza de la siguiente manera:

Para ejecutar un programa de consola de Windows en mintty o Cygwin sshd, anteponga console.exe a la línea de comandos:

$ build/console.exe c:/Python27/python.exe
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 10 + 20
30
>>> exit()

Es probable que los binarios preconstruidos para msys funcionen con Git Bash. (¡Verifique si hay una versión más nueva si ha pasado un tiempo significativo desde que se publicó esta respuesta!).


A partir de Git para Windows 2.7.1, también intente usar winpty c:Python27/python.exe; WinPTY se puede incluir listo para usar.


2
¿Puede por favor, explicar el build/console.exe c:/Python27/python.exe- es esto debe ejecutarse en la consola GitMsys o de otra manera?
0leg

@ h3d0, sí, dentro de la terminal. Por supuesto, esto supone que ese buildes el directorio en el que se console.exeencuentra; Actualice la ruta de manera apropiada dependiendo de dónde / cómo la instaló realmente.
Charles Duffy el

1
@ h3d0 Sí, es un software adicional; Mi respuesta incluye un enlace.
Charles Duffy

77
Creo que puedes usarlo como winpty c:/Python27/python.exe, sin hacer nada adicional. La utilidad winpty.exe se puede encontrar en Git \ usr \ bin. Estoy usando Git para Windows v2.7.1
Xun Yang

1
@ XunYang, ... winpty está incluido ahora? ¡Agradable! Editado apropiadamente.
Charles Duffy

47

Soy usuario de Windows 10 y he instalado GIT en mi sistema simplemente aceptando los valores predeterminados.

Después de leer las respuestas anteriores, obtuve 2 soluciones propias y estas 2 soluciones funcionan perfectamente en GIT bash y me facilitan la ejecución de declaraciones de Python en GIT bash.

Adjunto 3 imágenes de mi terminal GIT bash. Primero con problemas y los últimos 2 como soluciones.

PROBLEMA : el cursor solo espera después de presionar el pythoncomando

ingrese la descripción de la imagen aquí

SOLUCION 1

Ejecutar winpty <path-to-python-installation-dir>/python.exeen terminal GIT bash.

Nota: No utilice C:\Users\Admincomo estilo de ruta en GIT fiesta, en lugar de utilizar /C/Users/Admin.

En mi caso, ejecuté el winpty /C/Users/SJV/Anaconda2/python.execomando en GIT bash

O si no conoce su nombre de usuario , ejecutewinpty /C/Users/$USERNAME/Anaconda2/python.exe

ingrese la descripción de la imagen aquí

SOLUCIÓN 2

Simplemente escriba python -iy eso es todo.

ingrese la descripción de la imagen aquí

Gracias.


2
Descubrí que winptytambién funcionará con Windows Python Launcher, por lo que todo lo que necesita es, por ejemplo, alias py='winpty py'en su .bashrc y luego volver a la normalidad.
Karl Knechtel

Sí, eso depende de ti, ¿cómo manejas las cosas para mejorar tu vida?
Hullull

9

Intenta en python -ilugar de python, es una cosa del cursor.


8

Además de la respuesta de @ Charles-Duffy, puede usar winpty directamente sin instalar / descargar nada adicional. Solo corre winpty c:/Python27/python.exe. La utilidad winpty.exe se puede encontrar en Git \ usr \ bin. Estoy usando Git para Windows v2.7.1

Los binarios precompilados de @ Charles-Duffy es la versión 0.1.1 (según el nombre del archivo), mientras que el incluido es 0.2.2


8

Solución alternativa de Git Bash: inicie Python 2 y Python 3 con alias

HI . Esta es (para mí) la mejor solución para ejecutar Python (Python 2.7 y Python 3.x) directamente desde Git Bash en Win 10 => agregando alias en el archivo de alias que utiliza Git Bash.

El archivo de alias de Git Bash es aliases.sh . Está localizado en:

C:\path where you installed Git\etc\profile.d\aliases.sh

1) Abra (con un editor de texto como Atom u otro) los aliases.sh

por ejemplo: en mi caso el archivo está en C:\Software\Develop\Git\etc\profile.d\aliases.sh

2) Agregue su alias para Python

En mi caso, los python.exe están instalados en:

C:\Networking\Network Automation\Python 2.7\python.exe
C:\Networking\Network Automation\Python 3.7\python.exe

Por lo tanto , debe crear 2 alias, uno para Python 2 ( llamé python2 ) y el otro para Python 3 ( nombré solo python ) Git Bash usa la estructura de archivos de Linux, por lo que debe cambiar el "\" para "/" y si usted tener una ruta como mi ejemplo de Automatización de red lo pones con ""

"Automatización de red" , por ej.

winpty es el comando mágico que llamará al ejecutable.

Entonces agregue estas líneas al comienzo de aliases.sh

alias python2='winpty C/Networking/"Network Automation"/"Python 2.7"/python.exe'
alias python='winpty C/Networking/"Network Automation"/"Python 3.7"/python.exe'

3) Agregue o modifique otros alias (si lo desea)

También modifiqué el ll alias para mostrar todos los archivos y en una lista legible por humanos:

alias ll='ls -lah'

4) Guarde el archivo aliases.sh


5) OK !!! cierra y relanza tu Git Bash

Ahora, de forma permanente, puede iniciar Python directamente desde Git Shell simplemente escribiendo

$ python -> lanzar Python 3

$ python2 -> lanzar Python 2

$ ll -> ingresa un ls -lah para mostrar rápidamente su lista detallada de archivos

Saludos, Harry


5

Puede cambiar el objetivo del acceso directo de Git Bash desde:

"C:\Program Files\Git\git-bash.exe" --cd-to-home 

a

"C:\Program Files\Git\git-cmd.exe" --no-cd --command=usr/bin/bash.exe -l -i

Esta es la forma en que ConEmu solía iniciar git bash (versión 16). La versión reciente comienza normalmente y así es como llegué allí ...


Esto funcionó para mí 👍. ¿Vale la pena señalar lo que hacen los argumentos bash.exe? la página de manual dice -l: Haga que bash actúe como si se hubiera invocado como un shell de inicio de sesión -i: si las opciones -i están presentes, el shell es interactivo
Día

Hace un tiempo, ConEmu funcionaba bien sin winpty y olvidé completamente lo que hacía. ¡Gracias, esto funcionó tal como era antes!
chaz

5

escriba: 'winpty python' y funcionará

gitbash tiene algunos problemas al ejecutar cualquier comando que comience con python. esto también se aplica a cualquier comando python manage.py. Siempre comienza con 'winpty python manage.py' Al menos esto es lo que funciona para mí. Ejecutando Windows 10.


2

Además de la respuesta @Vitaliy Terziev

intente touch .bash_profiley luego agregue el alias en el archivo.


1
Usé .bashrc, pero cuando abrí Git Bash, recibí un mensaje de advertencia de que bashrc existe sin un .bash_profile. Cambié el nombre de .bashrc a .bash_profile y ahora la advertencia desapareció. Gracias.
JustinDanielson

2

2 soluciones, en lugar de una solución: en mi Git Bash, el siguiente comando se cuelga y no recibo el mensaje:

% python

Entonces solo uso:

% winpty python

Como algunas personas han señalado anteriormente, también puede usar:

% python -i

.


1

Estoy usando MINGW64 a través de Visual Studio Code en Windows 10 e intento instalar node-sass(lo cual requiere python2). Seguí felixrieseberg / windows-build-tools # 56 en Github que resolvió mi problema.

Este es un caso especial, pero estoy publicando en caso de que alguien tenga el mismo problema:

npm --add-python-to-path='true' --debug install --global windows-build-tools

Esto instala python y otras herramientas de compilación necesarias para %USERPROFILE%\.windows-build-tools\python27.


1

Para la versión 3.7.3 de Python en vscode con gitbash como terminal predeterminado, estuve lidiando con esto por un tiempo y luego seguí el consejo de @Vitaliy Terziev de agregar el alias a .bashrc pero con la siguiente especificación:

alias python = '"/ c / Users / my user name / AppData / Local / Programs / Python / Python37 / python.exe"'

Observe la combinación de comillas simples y dobles debido a los espacios de "mi nombre de usuario".

Para mí, "winpty" no pudo resolver la ruta de Python en vscode.


0

Otro ejemplo de este problema es usar la interfaz de línea de comandos de AWS Elastic Beanstalk (awsebcli, eb cli) de git bash (MINGW64, Mintty) en Windows (usando git versión 2.19.0.windows.1).

Solo estoy publicando esto porque me tomó un tiempo terminar aquí, buscando eb-cliproblemas específicos.

Los comandos como eb inito eb config save, que requieren la entrada del usuario, parecen causar un congelamiento / bloqueo. En realidad, supongo que la consola no se actualiza con el texto que solicita la entrada del usuario. Además, eb deploysolo actualiza el texto de la consola una vez que el comando ha finalizado, por lo que no puedo ver las actualizaciones de progreso hasta que termine.

Como se menciona en las notas de lanzamiento de git para Windows (para v2.19.0) y, por ejemplo, en la respuesta de Xun Yang , una solución es ejecutar

winpty eb <command>(en lugar de solo eb <command>)

Una alternativa, como se sugiere en este tema de git para Windows , podría ser usar la consola nativa de Windows en lugar de mintty (opción durante la instalación de git).


0

El que funcionó para mí es como se mencionó anteriormente en estas excelentes respuestas anteriores, es el alias de la siguiente manera: (Estoy usando anaconda, así que primero encuentre dónde está la ruta de Python, luego agréguela al alias en git bash). 1. en el terminal anaconda ejecuto: where python 2. en git bash ejecuto: alias python='winpty "C:\ProgramData\Anaconda3\envs\your_env_name\python.exe"' 3. Hecho. Python se define dentro del git Bash usando el alias.

Gracias a (Vitaliy Terziev & hygull) por sus útiles respuestas.


0
  1. python.exe -ifunciona pero tiene problemas al salir del modo interactivo enviando "^ Z" (CTRL + Z). Entonces, parece mejor usarlo winpty python.exeen Git Bash para Windows.

  2. Use el ~/bindirectorio para hacer un archivo de ajuste / referencia (como ~/bin/python) que estará accesible en todas partes (puede usar referencias de versiones diferentes como ~/bin/python37).
    Código dentro del archivo:

#!/usr/bin/env bash
# maybe declare env vars here like
# export PYTHONHOME=/c/Users/%USERNAME%/.python/Python36
# export PATH="${PATH}:/c/Users/%USERNAME%/.python/Python36"

# replace %USERNAME%,
# or use "~" instead of "/c/Users/%USERNAME%" if it works
winpty /c/Users/%USERNAME%/.python/Python36/python.exe ${@}

Simplemente no me gustan estos alias "mágicos" que siempre olvidas de dónde provienen, y que a veces conducen a problemas en algunos casos.

  1. Usar ~/bin/pythonarchivo y -iparámetro:
#!/usr/bin/env bash
if [ -z "${@}" ]; then
    # empty args, use interactive mode
    /c/Users/%USERNAME%/.python/Python36/python.exe -i
else
    /c/Users/%USERNAME%/.python/Python36/python.exe ${@}
fi

19480756 [sig] bash 2740! sigpacket::process: Suppressing signal 18 to win32 process (pid 14820)- ejemplo de respuesta después de enviar ^Zcon modo interactivo ejecutadopython.exe -i
Kirby

0

Escriba el comando PY en lugar de Python. Invocar al intérprete (python.org).


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.