PyQt4和64位Python

4

我正在尝试使用我编写的程序来运行64位版本的Python。该程序使用我在PyQt4中编写的GUI。我找不到PyQt4的64位版本,当我尝试将32位的PyQt4与64位的Python一起使用时,会出现以下错误:

S:\src>SimLauncher.py
Forcing DISTUTILS_USE_SDK=1
Traceback (most recent call last):
 File "SimLauncher.py", line 42, in <module>
   from SwSim import SwSim
 File "SwSim.py", line 13, in <module>
   from PyQt4 import QtSql,QtGui
ImportError: DLL load failed: %1 is not a valid Win32 application.

明显存在不兼容性。我尝试了这个修复方法,但是出现了同样的错误:

http://code.google.com/p/pyqt4-win64-binaries/downloads/list

如果您知道如何解决,请告诉我!

你看过PySide了吗?它的许可证比PyQt更好,而且是诺基亚项目。http://www.pyside.org/ - sje397
我已经在PyQt4中开发了一个1000行的GUI:/ - tylerthemiler
1
PySide与PyQt非常兼容-您可能只需要更改导入方式为“from PySide import ...”而不是“from PyQt import ...”。 - Liquid_Fire
@sje397:目前还没有x86-64 Win32二进制文件的PySide版本。@tylerthemiler:PySide在很大程度上与PyQt4兼容API - 通常您只需要将导入从PyQt4更改为PySide,它就能正常工作。 - Chris Morgan
谢谢您的建议,唯一的问题是我没有看到 PySide 的 64 位版本...所以我认为我会遇到同样的问题... - tylerthemiler
现在提供了64位版本:http://qt-project.org/wiki/PySide_Binaries_Windows - user1220978
2个回答

6

这些dll文件的命名很奇怪,例如QtCore4.dll而不是QtCore.dll...这导致了一些奇怪的错误。当我尝试从PyQt4中导入QtCore时: - tylerthemiler
QtCore4.dll是官方PyQt4发行版使用的同样“奇怪”的名称。您之前在64位Python site-packages文件夹中安装的32位PyQt4可能会干扰64位PyQt4文件。尝试清理以前的PyQt4安装,并确保64位DLL在Windows DLL搜索路径中优先于32位DLL。 - cgohlke
二进制文件可以正常运行,但是它有两个dlls的副本。如果你删除主文件夹中的dlls并保留bin中的dlls,它们就可以正常工作。唯一的问题是这个安装程序没有我需要的可选pyqt sql组件,所以对于我来说它并没有真正解决问题,但是对于那些不需要额外的qt sql包的人来说,在win7 64位英特尔平台上它非常好用! - tylerthemiler

1

是的,我看到那个链接了...我正在寻找一些不需要太多编译之类的东西,因为我对此并不熟悉。我猜没有二进制文件吗? - tylerthemiler
这个页面上有一个二进制文件:http://www.ozgurfx.com/downloads/PyQt-Py2.6-gpl-4.5.4-1_amd64.exe(来源:http://eoyilmaz.blogspot.com/2009/09/how-to-compile-pyqt4-for-windows-x64.html)唯一的问题是您可能需要另一个/更新版本的PyQt... - user111086
它是否与AMD有关系?我尝试了此答案底部的二进制文件,但它没有起作用,因为它是针对Python 2.5的,而我正在使用2.6。所以我不知道问题是AMD(我使用的是Intel)还是Python版本。 - tylerthemiler
不,这并不重要...只需确保它适用于Python版本(在您的情况下为2.6)。 - user111086

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接