程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了RuntimeError:丢失了sys.stdout大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决RuntimeError:丢失了sys.stdout?

开发过程中遇到RuntimeError:丢失了sys.stdout的问题如何解决?下面主要结合日常开发的经验,给出你关于RuntimeError:丢失了sys.stdout的解决方法建议,希望对你解决RuntimeError:丢失了sys.stdout有所启发或帮助;

此异常源于以下事实:cpython导入了io,并且间接地abc.py在标准流的初始化期间:

if (!(iomod = Pyimport_importModule("io"))) {
    goto error;
}

io导入abc模块并注册FileIO为的虚拟子类RawIOBase,的其他两个类BufferedioBase和的其他子类TextIOBase。在过程中ABCMeta.register调用__subclasscheck__

如您所知,print 设置__subclasscheck__时使用in是一个很大的禁忌。初始化失败,您返回错误:sys.stdout __

if (initstdio() < 0)
    Py_FatalError(
        "Py_NewInterpreter: can't initialize sys standard streams");

您可以通过一个守护着它绕过它hasattr(sys, 'stdout')sys而一直由这点初始化stdout还没有(和,因此,将不存在sys早期初始化阶段):

if hasattr(sys, 'stdout'):
    print("DeBUG")

现在启动Python时,您应该获得大量输出。

解决方法

我试图与调试的问题abc.ABCMeta-特别是子类的支票,并没有按预期方式工作,我想通过简单地添加一个启动print__subclasscheck__方法(我知道有调试代码更好的方法,但假装的缘故这个问题,别无选择)。但是,之后启动Python时,Python崩溃了(就像分段错误)
我得到了这个异常:

Fatal Python error: Py_Initialize: can't initialize sys standard streams
TraceBACk (most recent call last):
  File "C:\...\lib\io.py",line 84,in <module>
  File "C:\...\lib\abc.py",line 158,in register
  File "C:\...\lib\abc.py",line 196,in __subclasscheck__
RuntimeError: lost sys.stdout

因此,将其放入其中并不是一个好主意print。但是,异常从何而来呢?我只更改了Python代码,这不会崩溃,对吧?

没有人知道这个地方异常是从,如果/我怎样才能避免它,但仍然把未来printabc.ABCMeta.__subclasscheck__方法?

我正在使用Windows 10,Python-3.5(以防万一它可能很重要)。

大佬总结

以上是大佬教程为你收集整理的RuntimeError:丢失了sys.stdout全部内容,希望文章能够帮你解决RuntimeError:丢失了sys.stdout所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。