PySide-Qt:无法初始化OLE(错误80010106)



我将PySide与Python 2.7.3 x64一起使用,在运行Qt应用程序时,我注意到Wing IDE的输出中出现了以下错误。

Qt:无法初始化OLE(错误80010106)

这似乎不会导致问题,直到我在Wing之外运行Qt应用程序时关闭它。关闭的应用程序将抛出pythonw.exe窗口错误。我认为这两者是相关的,因为即使是最基本的Qt应用程序也会发生这种情况。但我不太确定这笔交易是什么。任何想法都将不胜感激!

问题将与Qt在已初始化为MTA单元模型的线程上调用OleInitialize或CoInitialize有关。

那些在导入clr后出现问题的人应该注意,在.Net世界中,线程默认初始化为MTA,尽管这可以通过调用SetApartmentState或使用STAThreadAttribute来更改。

我知道这是旧的,但我自己也得出了同样的结论,所以我决定将来把它作为其他人的答案发布。

对我来说,问题是另一个库正在导入clr模块以使用一些.NET库,这在我稍后运行时导致了这些问题

appQT = QtGui.QApplication([])

通过在程序开始时初始化Qt(甚至在导入之前),可以保证在导入clr之前对其进行初始化。然后,您可以在程序中缓慢地将Qt初始化移回更远的位置,直到再次出现错误(如果您不知道哪个库正在导入clr)。

这不是一个理想的解决方案,但对我来说确实有效。

此问题通过在import clr:之前调用CoInitialize来解决

https://github.com/pythonnet/pythonnet/issues/439

最新更新