4

所以我有一种情况,我需要制作二进制补丁,然后能够从 python 中应用它们。我发现bsdiff看起来像一个很棒的算法并且有一个python 扩展模块,但是那个扩展模块没有超过 Python 2.5 的 Windows 安装程序

好吧,所以我从来没有认真地写过 C,更不用说尝试了一个 python 扩展模块,我开始自己编译它。在用 MinGW32 解决 DLL 加载错误几个小时后,我设法使用项目源代码中提供的 setup.py 对其进行编译和构建。但是,在导入生成的 bsdiff 模块后,我得到:

ImportError: DLL load failed: %1 is not a valid Win32 application.

我正在运行 64 位 python。

有什么建议吗?

4

1 回答 1

2

这是 Python 和 pywin32 版本的不匹配。使用 easy_install 在虚拟环境中安装 pywin32 后,我收到了相同的错误消息: (py351env) C:\Users\ernesto.luzon\Downloads>easy_install pywin32-220.win-amd64-py3.5.exe

当我尝试导入 win32gui 时,我得到了完全相同的错误: DLL Load Failed: %1 is not a valid win32 application

谷歌搜索错误消息让我看到了这篇文章,cgohlke 建议从这里下载 pywin32 包:http ://www.lfd.uci.edu/~gohlke/pythonlibs/#pywin32

我下载了64位版本并通过pip安装: pip install pywin32-220-cp35-none-win_amd64.whl

我立即收到一条错误消息,指出我的 python 版本与我尝试安装的包不匹配。所以我在命令行中输入了“python”来启动解释器,实际上安装在我的 64 位机器上的 python 是一个 32 位的 python。卸载python并正确安装64位后,这个错误消失了,无论我是使用easy_install从sourceforge项目安装pywin32,还是我使用pip从gohlke安装wheel文件。

于 2016-02-09T12:01:24.463 回答