如何安装 32 位版本的 numpy

问题描述 投票:0回答:2

经过一番努力,我终于得到了 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

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

ImportError: dynamic module does not define init function (initmultiarray)

我认为我可以构建 32 位 numpy 对吗?

python numpy matplotlib osx-snow-leopard 32bit-64bit
2个回答
5
投票

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

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

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

但是我会收到一个错误,最后一行会说:

RuntimeError: Broken toolchain: cannot link a simple C program

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

gcc -pthread _configtest.o -o _configtest

_configtest.o: could not read symbols: File in wrong format

collect2: ld returned 1 exit status

_configtest.o: could not read symbols: File in wrong format

collect2: ld returned 1 exit status

failure.

removing: _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,

runtime_library_dirs=None, debug=0, extra_preargs=['-m32'],

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

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


0
投票

您可以尝试使用 EPD 的免费版本(如果您在学术界,完整版本是免费的):

http://www.enthought.com/products/epd_free.php/

它有一个适用于 Mac 的 32 位版本,包含所有关键的科学堆栈包,包括 scipy、numpy 和 matplotlib。

© www.soinside.com 2019 - 2024. All rights reserved.