PyQt4无法导入QtGui但可以导入QtCore

时间:2013-03-29 18:09:19

标签: pyqt4 python-3.3 qtgui

我在这个Windows 7 32位

上安装了python3.3 x86(官方python.org安装程序)

然后从这里PyQt4-4.10-gpl-Py3.3-Qt5.0.1-x32-2.exe安装PyQt4-4.10用于python3.3 windows x86,这也是官方安装程序,完整的PyQt4安装(包括Qt Runtime)

我仔细检查了python和PyQt4都在$ PATH上

但似乎我可以导入一些软件包(例如,QtCore)但不能导入其他软件包(例如,QtGui)

尽管它们在同一条道路上并排存在

>>> from PyQt4 import QtCore
>>> QtCore.__file__
'C:\\Python33\\lib\\site-packages\\PyQt4\\QtCore.pyd'
>>> from PyQt4 import QtGui
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    from PyQt4 import QtGui
ImportError: DLL load failed: The specified module could not be found.
>>> import os
>>> os.path.exists('C:\\Python33\\lib\\site-packages\\PyQt4\\QtGui.pyd')
True
>>> from PyQt4 import Qt
>>> from PyQt4 import QtXml
>>> from PyQt4 import QtNetwork
>>> from PyQt4 import QtDesigner
Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    from PyQt4 import QtDesigner
ImportError: DLL load failed: The specified module could not be found.
>>> os.path.exists('C:\\Python33\\lib\\site-packages\\PyQt4\\QtDesigner.pyd')
True

2 个答案:

答案 0 :(得分:6)

Qt5Gui.dll依赖于D3dCOMPILER_43.dll,它是DirectX的一部分。您可以使用DirectX End-User Runtime Web Installer更新您的安装。

答案 1 :(得分:1)

如果您不想安装整个DirectX,可以执行以下操作:

首先下载Directx可再发行组件:http://www.microsoft.com/en-us/download/details.aspx?id=8109(这是一种自解压MS-Cabinet文件)

然后以Linux为例(基于Debian - 应该在其他发行版上工作类似):

sudo apt-get install cabextract
mkdir cabs
cabextract -d cabs -F JUN2010\* directx_Jun2010_redist.exe
cd cabs
mkdir x64
cabextract -d x64 -F \*.dll *_x64.cab

在Windows中,您可以使用Winrar提取cab文件。一些Windows版本包括cab文件的命令行实用程序 - 我认为它被称为extract