大佬教程收集整理的这篇文章主要介绍了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代码,这不会崩溃,对吧?
没有人知道这个地方异常是从,如果/我怎样才能避免它,但仍然把未来print
的abc.ABCMeta.__subclasscheck__
方法?
我正在使用Windows 10,Python-3.5(以防万一它可能很重要)。
以上是大佬教程为你收集整理的RuntimeError:丢失了sys.stdout全部内容,希望文章能够帮你解决RuntimeError:丢失了sys.stdout所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。