如何安装 32 位版本的 numpy

Pau*_*son 0 python numpy matplotlib osx-snow-leopard 32bit-64bit

经过大量努力,我终于得到了 matplotlib 及其所有依赖项,可以在 Snow Leopard 10.6.8 上和谐地工作。我现在想稍微调整它的配置,以允许我使用我的 32 位安装的 wxPython 作为它的后端。问题是当我使用 32 位安装的 Python 2.7.3(python.org 版本)时,numpy(matplotlib 所需)不会导入。谷歌搜索一个小时左右让我相信 numpy 可以通过与 setup.py 结合指定 CFLAGS 和 LDFLAGS 来构建和安装为 32 位。我不清楚这些标志的作用,毫不奇怪我没有成功使用它们。这是我在下载的 numpy 文件夹中尝试的:

$ CLFLAGS=-m32 LDFLAGS=-m32 python setup.py install
Run Code Online (Sandbox Code Playgroud)

我收到一些错误消息,但 64 位兼容版本的 numpy 确实到达了我的 sitepackages 文件夹中。然而,当我使用 32 位解释器时,出现错误:

ImportError: dynamic module does not define init function (initmultiarray)
Run Code Online (Sandbox Code Playgroud)

我认为我可以构建 32 位 numpy 是正确的吗?

小智 5

我花了几天时间环顾四周,把头发拔出来,所以我想我应该在这里为我的发现做出贡献......

我遇到了同样的问题,但仅仅设置标志对我来说不起作用(但这确实是需要的)...就我而言,我有一个单独的 32 位版本的 python,所以我这样做了:

CFLAGS="-m32" LDFLAGS="-m32" /util/linux32/bin/python setup.py install --prefix=/util/science/gfortran-4.4.6/linux32/

(不用担心我的 gfortran 前缀,幸运的是我必须测试不同的编译器..;))

但随后我会收到错误,最后一行会显示:“RuntimeError:损坏的工具链:无法链接简单的 C 程序”

但如果我向上滚动我会看到:

gcc -pthread _configtest.o -o _configtest

_configtest.o:无法读取符号:文件格式错误

Collect2: ld 返回 1 退出状态

_configtest.o:无法读取符号:文件格式错误

Collect2: ld 返回 1 退出状态

失败。

删除:_configtest.c _configtest.o

正如您所看到的,在对 gcc 的调用中没有“-m32”标志...

我追踪到 distutils 安装;对我来说:/util/linux32/lib/python2.7/distutils/ccompiler.py

可能有比这更优雅的解决方案,比如直接获取 cflags 值,但我不是 python 女孩,所以不确定如何..;)我可能会弄清楚,但我现在关心的是最终安装32位模式下的numpy..所以无论如何...这个python代码的第693行,我改变了

runtime_library_dirs=None, debug=0, extra_preargs=None,
Run Code Online (Sandbox Code Playgroud)

runtime_library_dirs=None, debug=0, extra_preargs=['-m32'],
Run Code Online (Sandbox Code Playgroud)

(在函数 link_executable 中;如果你有不同版本的 python...)

瞧... numpy 在 32 位模式下成功安装在 64 位机器上。我认为这也适用于其他模块,因为它与 distutils 有关,而不是 numpy..;)

希望这可以帮助将来的人并节省一些时间!

夏娃玛丽