PyQt4需要将DLL移动到包root

3 python pyqt4

我使用了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]
Run Code Online (Sandbox Code Playgroud)

这看起来很熟悉.有趣的是,在以前版本的3d软件中,它确实有效(并且来自标准命令行),但不适用于新的软件版本.我检查了sys.path(在app中),看看这条路是否存在:C:\ Python26\Lib\site-packages\PyQt4\bin

在这两个应用程序中都存在此路径.

最后通过将DLL从C:\ Python26\Lib\site-packages\PyQt4\bin复制到C:\ Python26\Lib\site-packages\PyQt4来设法使其工作

这有什么原因吗?我很难进一步调试这个东西(确保一切都是64位,路径是正确的,等等)

谢谢你的帮助

cgo*_*lke 5

问题可能是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']))
Run Code Online (Sandbox Code Playgroud)