J'ai eu le même problème que Python ne fonctionne pas dans la ligne de commande de git bash , où dans Git Bash, lorsque je tape Python
, il se bloque simplement.
Cependant, en tapant winpty python
fonctionne parfaitement.
Qu'est-ce que winpty
exactement? Pourquoi la commande ci-dessus est-elle utile?
winpty est un progiciel Windows fournissant une interface similaire à un pty-master Unix pour communiquer avec les programmes de la console Windows.
C'est pourquoi vous en avez besoin comme décrit ici :
Le logiciel fonctionne en démarrant le
winpty-agent.exe
processus avec une nouvelle fenêtre de console cachée, qui fait le pont entre l'API de la console et les codes d'échappement d'entrée/sortie du terminal. Il interroge le tampon d'écran de la console cachée pour les modifications et génère un flux de sortie correspondant.
rprichard/winpty
mentionne:
Le package se compose d'une bibliothèque (libwinpty) et d'un outil pour Cygwin et MSYS pour exécuter des programmes de console Windows dans un pty Cygwin/MSYS.
Comme détaillé dans " mintty/mintty
Conseils ":
Lors de l'interaction avec des programmes qui utilisent une API Windows native pour l'interaction utilisateur en ligne de commande ("mode console"), un certain nombre d'effets indésirables sont observés; c'est le problème d'incompatibilité pty et le problème d'incompatibilité d'encodage de caractères .
Cela affecte fondamentalement tous les programmes non compilés dans un environnement cygwin ou msys (et notez que MinGW n'est pas msys dans ce contexte).Pour contourner ce problème, vous pouvez utiliser
winpty
comme wrapper pour appeler le programme Windows.
Alors:
Pourquoi de nombreux outils fonctionnent-ils en CygWin ordinaire, mais certains ont également besoin de Winpty?
Cela a été demandé (spécifiquement pour Python) dans msys2/MINGW-packages
problème 2645
il y a un coût non nul associé à l'utilisation de winpty, et la plupart du temps, mintty fonctionne bien de toute façon.
Votre problème découle de l'utilisation de mingw python qui est une version native de Windows et s'attend donc à ce qu'il soit utilisé à partir d'une console Windows.
mintty utilise des canaux pour les entrées/sorties, il ne ressemble donc pas à un terminal approprié pour la plupart des programmes.En revanche, si vous utilisez msys2 (ou cygwin) python (.e.g
/usr/local/bin/python2
), tout fonctionne.
(Avec msys2/MINGW-packages
PR 2675 , python3 détecte correctement le terminal)