我通过 Git-for-Windows 和 CPython35-32 使用 mintty。为什么 Python 认为它没有连接到终端?
$ python -c "import sys; print(sys.stdout.isatty())"
False
有趣的是,我还有一个问题是我无法在 mintty 中启动 Python 的交互式会话。可能与这个问题有关
$ python
<nothingness here...>
mintty 的控制台模拟使用管道在后台模拟 tty,这会混淆本地程序检查它们是否附加到 tty。isatty()
在您的情况下,由于假 tty,Python将 stdout 视为附加到管道并返回 False。
这是薄荷问题 #56 - 改进对本机控制台程序的支持的另一个示例。mintty wiki 条目“与外星程序的输入/输出交互”指出,在mintty中运行问题程序时,您可以使用winpty之类的包装器来解决该问题。
@vonc 提到的 git 提交只能解决 git 程序本身的问题——它们不会影响其他需要在自己的源代码中实现 git 解决方法的程序(例如在 git-for-window 的 mintty 中运行的 Python)。
您可能想尝试使用 Git 2.12(2017 年第一季度)
请参阅Jeff Hostetler ( )的提交 a9b8a09(2016 年 12 月 22 日) 。
请参阅Alan Davies ( )的提交 8692483(2016 年 12 月 22 日) 。
请参阅Johannes Schindelin ( )的commit fee807c(2016 年 12 月 22 日) 。(由Junio C Hamano 合并 -- --在58fcd54 提交中,2016 年 12 月 27 日)jeffhostetler
scooter6386
dscho
gitster
mingw
: 替换isatty()
破解Git for Windows 带有一个依赖于 MSVC 运行时内部的补丁,但它不能与最近的 MSVC 运行时正常工作。
最初是为使用 VC++ 编译而编写的替代品。此消息中的补丁是该替换的反向移植,并且它还修复了先前的尝试,以
isatty()
表明/dev/null
它不是交互式终端。