【问题标题】:How can 32bit modules run on 64bit Python?32 位模块如何在 64 位 Python 上运行?
【发布时间】:2014-07-02 20:49:57
【问题描述】:

我在 64 位 Win7 机器上使用 32 位 Python2.7 版本的 inspyred 库编写了一个遗传算法程序。在生成人口时,程序在使用高达 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(免费),安装它,然后转到C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC,打开命令提示符并输入vcvarsall amd64将编译器设置为 64 位模式。然后尝试重新编译您的自定义模块,看看它是否有效。
  • 如果问题是它无法导入AoN,向我们展示这段 Python 代码将无济于事。只要存在适用于正确版本的任何 C 扩展模块,Python 代码就可以在 64 位或 32 位上正常运行。 numpy 和 scipy 可用于 64 位 Python。如果 AoN 是你用 C 编写的模块,你是如何编译它的?
  • @BrenBram 我也安装了 numpy 和 scipy 64bits。仍然出现此错误。

标签: python python-2.7 32bit-64bit


【解决方案1】:

答案很简单——它行不通。进程是 32 位或 64 位,就这么简单。因此,如果有 one 模块无法在 64 位中运行,除了为 64 位重新编译模块之外,一个选择是将其具有的任何目的委托给在 32 位中运行的第二个进程,只需这样做。这可能实用也可能不实用,具体取决于模块的实际任务。

【讨论】:

    猜你喜欢
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 2012-03-12
    • 2019-12-17
    • 2014-12-16
    • 2014-02-12
    • 2011-02-17
    相关资源
    最近更新 更多