如何在OSX上安装numpy和scipy?
我刚开始用Mac,请大家多多包涵。
我现在用的是雪豹系统10.6.4。
我想安装numpy和scipy,所以我从它们的官方网站下载了python2.6、numpy和scipy的dmg文件。不过,我在导入numpy的时候遇到了问题:
Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/numpy/core/multiarray.so: no matching architecture in universal wrapper
有没有人能帮我解决这个问题?
8 个回答
我之前在使用numpy的时候遇到了一些问题,直到我在一个虚拟环境中安装了它,现在就没有任何问题了。我强烈建议你也试试这个方法。
我在Mac OSX 10.6.8上使用刚安装好的numpy和scipy时,也遇到了同样的错误提示。后来我发现有两个针对python2.7的.dmg文件:
- numpy-1.6.2-py2.7-python.org-macosx10.3.dmg
- numpy-1.6.2-py2.7-python.org-macosx10.6.dmg
是10.3.dmg里的包让我遇到了关于multiarray.so的错误提示。在安装了10.6.dmg里的包后,这个错误提示就消失了。
听起来你可能是在用64位的Python去调用一个32位的库。看起来有一个非官方的适用于Snow Leopard的64位Numpy。
补充一下:这里提供的Python 2.6的.dmg文件确实是32位的。(具体来说,它是一个包含i386和ppc版本的通用二进制文件)。同样,常规的numpy和scipy的.dmg版本在这里也都是32位的。(我怎么知道的?见下文!)所以如果你同时使用这些版本,应该是没问题的。
但你现在遇到问题了——所以我猜测你并没有使用你下载的2.6 .dmg中的Python版本。如果你在运行一个可执行的Python脚本,比如:
$ ./my-script.py
那么你可以尝试在命令行中明确指定你正在使用的Python。看起来MacPython的.dmg安装在/usr/local/bin/python,所以试试:
$ /usr/local/bin/python2.6 myscript.py
这样可以解决问题吗?
我怎么确定那些.dmg文件的内容是为哪个架构构建的……
- 挂载.dmg文件(也就是双击它打开一个卷)
使用gunzip和pax将包的内容解压到本地目录,比如:
$ mkdir tmp $ cd tmp $ gunzip -c /Volumes/Universal\ MacPython\ 2.6/MacPython.mpkg/Contents/Packages/PythonUnixTools-2.6.pkg/Contents/Archive.pax.gz | pax
使用
file
命令检查包内容中的二进制文件$ file Versions/2.6/bin/python Versions/2.6/bin/python: Mach-O universal binary with 2 architectures Versions/2.6/bin/python (for architecture ppc): Mach-O executable ppc Versions/2.6/bin/python (for architecture i386): Mach-O executable i386