我使用了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位,路径是正确的,等等)
谢谢你的帮助
问题可能是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)