Я предполагаю, что это происходит только тогда, когда sys.stderr
является ложным или исправленным обезьяной.
Например, первая проблема GitHub , на которую вы ссылаетесь, имеет следующее сообщение об ошибке:
AttributeError: 'UnicodeStdout' object has no attribute 'isatty'
Этот класс, UnicodeStdout
, отсутствует в стандартной библиотеке, и мои исследования указывают мне на старую версию hachoir lib (например, this commit ).
Вторая ссылка содержит еще одно подозрительное сообщение об ошибке, где имя только одного класса указывает на то, что sys.stdout
было перепутано с:
AttributeError: '_StdoutProxy' object has no attribute 'isatty'
Этот класс выглядит как "прокси", который не реализует все методы оригинального sys.stdout
.Это повлияет не только на isatty()
, но и на другие атрибуты, такие как fileno
(см., Например, эту другую проблему .)
Вы можете обезопасить атрибут самостоятельно:
sys.stderr = SomeProxyClass()
или добавьте чек, например:
if hasattr(sys.stderr, 'isatty') and sys.stderr.isatty()
, но в большинстве случаев это не требуется.