32位模块如何在64位Python上运行?

6
我使用inspyred库编写了一个遗传算法程序,运行在64位Win7机器上的32位Python2.7版本。在生成人口时,当程序使用了1959044K的内存时,程序停止运行。
我阅读了这个网站上的一些问题,我知道这是由于操作系统对32位程序有2GB限制造成的。所以我尝试切换到64位Python,并安装我正在使用的模块的64位版本,但不幸的是,除了一个模块外,其他所有模块都无法在64位平台上运行。
我还按另一个问题的建议安装了pywin32,但这也没有帮助。这个模块不是标准的Python库,我已经将它粘贴在下面。我收到的错误消息是:
import AoN
ImportError: DLL load failed: %1 is not a valid Win32 application.

我的理解是64位Python无法识别32位模块。我在这里也看到了http://effbot.org/zone/python-compile.htm有关编译源代码的内容,但我已经在64位上编译了源代码,但仍然无法解决问题。
最后,我将模块的目录路径粘贴到解释器路径中,但也没有帮助。
有没有办法让这个模块在64位Python上运行?请问是否有人可以解释一下编译源代码的过程,并告诉我这是否能帮助我解决问题?

尝试下载(如果未安装)免费的 Microsoft Visual C++ 2008 Express Edition。安装完成后,打开命令提示符并输入“vcvarsall amd64”来将编译器设置为 64 位模式。然后尝试重新编译自定义模块并查看是否正常工作。文件路径为:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC - SonicARG
如果问题是无法导入AoN,那么展示这段Python代码是没有帮助的。只要存在正确版本的C扩展模块,Python代码将在64位或32位上运行良好。numpy和scipy可用于64位Python。如果AoN是您用C编写的模块,那么您是如何编译它的? - BrenBarn
@BrenBram 我已经安装了64位的numpy和scipy,但仍然出现这个错误。 - Nobi
1个回答

8
答案很简单——它不能工作。一个进程要么是32位的,要么是64位的,就这么简单。所以如果有一个模块无法在64位上运行,除了重新编译模块为64位之外,另一种选择是将其任何目的委托给在32位上运行的第二个进程,仅仅做那件事。这可能或可能不实际,取决于模块的实际任务。

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