如何安装32位版本的numpy

时间:2012-06-29 15:54:43

标签: 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可以通过指定CFLAGS和LDFLAGS与setup.py连接来构建和安装为32位。我不清楚这些旗帜做了什么,并且毫不奇怪我没有成功使用它们。这是我在下载的numpy文件夹中尝试的内容:

$ CLFLAGS=-m32 LDFLAGS=-m32 python setup.py install

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

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

我是否认为我可以建立一个32位的numpy?

2 个答案:

答案 0 :(得分:4)

我只是花了几天时间环顾四周,拔掉头发,所以我想我会在这里为我发现的东西做出贡献......

我有同样的问题,但只是设置标志对我不起作用(但确实需要)...在我的情况下,我有一个单独的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:无法链接简单的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值,但我不是蟒蛇女孩所以不确定如何...;)我可能想出来但我现在关心的是最终在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 ...)

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

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

前夕 - 马里

答案 1 :(得分:0)

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

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

这是一个32位版本的mac,包含所有关键的科学堆栈包,包括scipy,numpy和matplotlib。