我通过Git-for-Windows和CPython35-32使用mintty。为什么Python认为它没有附加到终端?
$ python -c "import sys; print(sys.stdout.isatty())"
False
有趣的是,我还有一个问题,即我无法在薄荷内部启动Python的交互式会话。它可能与此问题有关
$ python
<nothingness here...>
答案 0 :(得分:2)
mintty's console emulation uses pipes to emulate a tty混淆了本机程序检查它们是否附加到tty。在你的情况下,Python isatty()
认为stdout由于假tty而附加到管道并返回False。
这是mintty issue #56 - Improve support for native console programs的另一个例子。 mintty wiki entry "Input/Output interaction with alien programs"指出,您可以在运行问题程序时使用类似winpty的包装器解决问题。
@vonc提到的git提交只解决git程序本身的问题 - 它们不会影响其他程序(例如运行在git-for-window中的Python)在他们自己的来源中实施git的解决方法。
答案 1 :(得分:0)
您可能想尝试使用Git 2.12(2017年第1季度)
commit a9b8a09见Jeff Hostetler (jeffhostetler
)(2016年12月22日)
请commit 8692483查看Alan Davies (scooter6386
)(2016年12月22日)
请commit fee807c查看Johannes Schindelin (dscho
)(2016年12月22日)
(Junio C Hamano -- gitster
--于2016年12月27日commit 58fcd54合并)
mingw
:替换isatty()
hackGit for Windows带有一个依赖于MSVC运行时内部的补丁,但它在最近的MSVC运行时无法正常工作。
最初编写的替换文件用于使用VC ++进行编译。此邮件中的补丁是该替换的后端,它还修复了先前使
isatty()
告知/dev/null
不是交互式终端的尝试。< / p>