4

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

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

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

4

3 回答 3

5

问题在于 Qt在已经初始化为 MTA 单元模型的线程上调用OleInitializeCoInitialize 。

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

于 2016-01-30T18:14:06.197 回答
3

我知道这很旧,但我得出了与 this.myself 相同的结论,因此我决定将其发布为将来其他人的答案。

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

appQT = QtGui.QApplication([])

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

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

于 2015-09-04T14:35:26.083 回答
0

此问题通过调用CoInitializebefore得到解决import clr

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

于 2017-03-30T12:03:16.590 回答