答案 0 :(得分:1)
我的猜测是,只有当sys.stderr
被模拟或猴子修补时才会发生这种情况。
例如,您引用的the first GitHub issue有以下错误消息:
AttributeError: 'UnicodeStdout' object has no attribute 'isatty'
这个类UnicodeStdout
不在标准库中,我的研究指向了hachoir lib的旧版本(例如this commit)。
second link还有另一条可疑的错误消息,其中仅有类的名称表示sys.stdout
被搞砸了:
AttributeError: '_StdoutProxy' object has no attribute 'isatty'
这个类似乎是一个“代理”,它没有实现原始sys.stdout
的所有方法。这不仅会影响isatty()
,还会影响其他属性,例如fileno
(例如,请参阅this other issue。)
您可以自己对该属性进行修补:
sys.stderr = SomeProxyClass()
或添加支票,例如:
if hasattr(sys.stderr, 'isatty') and sys.stderr.isatty()
但在大多数情况下,没有必要。