I had the same issue as Python not working in the command line of git bash, where in Git Bash, when I type Python
, it just hangs.
However, typing winpty python
works perfectly.
What exactly is winpty
? Why is the above command useful?
GitHub - rprichard/winpty: A Windows software package providing an interface similar to a Unix pty-master for communicating with Windows console programs. Product. Actions.
Git Bash is an application for Microsoft Windows environments which provides an emulation layer for a Git command line experience. Bash is an acronym for Bourne Again Shell. A shell is a terminal application used to interface with an operating system through written commands.
You don't need to use Git Bash. It is just conventional, because Git was developed and designed on Linux and most Git users use Linux and using Git Bash on Windows makes it a uniform experience. You can certainly use Git on cmd; just make sure you add C:\Program Files\git\cmd to your PATH .
Although Git is a collection of command-line utility programs, you can use it on Windows via a GUI-based app. Bash is only available on Unix-like operating systems, like macOS and Linux. Git Bash is strictly for Microsoft Windows users.
winpty is A Windows software package providing an interface similar to a Unix pty-master for communicating with Windows console programs.
That is why you need it as described here:
The software works by starting the
winpty-agent.exe
process with a new, hidden console window, which bridges between the console API and terminal input/output escape codes. It polls the hidden console's screen buffer for changes and generates a corresponding stream of output.
rprichard/winpty
mentions:
The package consists of a library (libwinpty) and a tool for Cygwin and MSYS for running Windows console programs in a Cygwin/MSYS pty.
As detailed in "mintty/mintty
Tips":
When interacting with programs that use a native Windows API for command-line user interaction (“console mode”), a number of undesirable effects are observed; this is the pty incompatibility problem and the character encoding incompatibility problem.
This basically affects all programs not compiled in a cygwin or msys environment (and note that MinGW is not msys in this context).As a workaround, you can use
winpty
as a wrapper to invoke the Windows program.
So:
Why do many tools work in plain CygWin but some of them also need winpty?
This was asked (specifically for Python) in msys2/MINGW-packages
issue 2645
there's a non-zero cost associated with using winpty, and most of the time, mintty works fine anyway.
Your problem stems from trying to use mingw python which is a native windows build, and hence expects it to be used from a windows console.
mintty uses pipes for input/output, so it doesn't look like a proper terminal to most programs.On the other hand, if you use msys2 (or cygwin) python (.e.g
/usr/local/bin/python2
), everything just works.
(With msys2/MINGW-packages
PR 2675, python3 detects the terminal correctly)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With