PyQt4 не может импортировать QtGui, но может импортировать QtCore

Я установил python3.3 x86 (официальный установщик python.org) на эту 32-разрядную версию Windows 7.

затем установил PyQt4-4.10 для python3.3 windows x86 отсюда PyQt4-4.10-gpl-Py3.3-Qt5.0.1-x32-2.exe, официальный установщик, полная установка PyQt4 ( включая среду выполнения Qt)

Я дважды проверил, что и 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

person bahaelaila7    schedule 29.03.2013    source источник
comment
работает для QtCore.pyd не работает как для QtGui.pyd, так и для Qt5Gui.dll и выдает это сообщение: OSError: [WinError 126] Указанный модуль не может быть найден, хотя оба файла находятся по одному и тому же пути к QtCore.pyd   -  person bahaelaila7    schedule 29.03.2013


Ответы (2)


Qt5Gui.dll зависит от D3dCOMPILER_43.dll, которая является частью DirectX. Вы можете обновить свою установку с помощью веб-установщика DirectX End-User Runtime.

person Eryk Sun    schedule 29.03.2013
comment
Спасибо большое, проблема решилась - person bahaelaila7; 31.03.2013

Если вам не нравится устанавливать весь DirectX, вы можете сделать следующее:

Сначала загрузите распространяемый пакет Directx: http://www.microsoft.com/en-us/download/details.aspx?id=8109 (это своего рода самораспаковывающийся файл MS-Cabine)

Затем, например, в 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 вы можете извлечь cab-файлы, например, с помощью Winrar. Некоторые версии Windows включали утилиту командной строки для CAB-файлов — кажется, она называлась extract.

person TNT    schedule 10.06.2013