PyQt4 Нужно переместить библиотеки DLL в корневой каталог - PullRequest
3 голосов
/ 06 января 2011

Я использовал новые установщики с http://www.riverbankcomputing.co.uk/software/pyqt/download для Python 2.6 x86_64 и у меня небольшая проблема с импортом PyQt4 в одном конкретном приложении.

Вот трассировка:

# ERROR : Traceback (most recent call last):
#   File "<Script Block >", line 2, in <module>
#     from PyQt4 import QtCore
# ImportError: DLL load failed: The specified procedure could not be found.
#  - [line 2]

Это может показаться знакомым. Забавно, что в предыдущей версии программного обеспечения 3d оно работает (и из стандартной командной строки), но не в новой версии программного обеспечения. Я проверил sys.path (в приложении), чтобы увидеть, существует ли этот путь: C: \ Python26 \ Lib \ site-packages \ PyQt4 \ bin

В обоих приложениях этот путь присутствует.

Наконец удалось заставить его работать, скопировав библиотеки DLL из C: \ Python26 \ Lib \ site-packages \ PyQt4 \ bin в C: \ Python26 \ Lib \ site-packages \ PyQt4

Есть ли известная причина для этого? Я с трудом отлаживаю эту штуку дальше (проверяя, все ли 64-битно, правильный путь и т. Д.)

Спасибо за вашу помощь

Ответы [ 2 ]

5 голосов
/ 06 января 2011

Проблема может заключаться в том, что установщики PyQt4 добавляют каталог PyQt4 \ bin в путь поиска Windows DLL.Если у вас установлены как 32-разрядная, так и 64-разрядная версии, только один найдет правильный набор DLL.

Решение состоит в том, чтобы добавить следующий код в каждую библиотеку Lib \ site-packages \ PyQt4_ init _. py файл:

import os
os.environ['PATH'] = ';'.join((os.path.join(
    os.path.abspath(os.path.dirname(__file__)), "bin"),
    os.environ['PATH']))
0 голосов
/ 06 января 2011

В моей папке ...\PyQt4\bin находится в основном несколько исполняемых файлов и много DLL, предположительно оригинальных Qt. Вы не используете их из Python. Вы используете файлы .pyd (которые являются DLL-файлами под капотом), которые - по крайней мере в моей установке, Python 3.1 под 32-битной Win7 - в основном каталоге (просто ...\PyQt4) и содержат код, который упаковывает Qt для использования из Python.

...