【问题标题】:How to install numpy and scipy on OSX?如何在 OSX 上安装 numpy 和 scipy?
【发布时间】:2010-12-24 16:38:28
【问题描述】:

我是 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

谁能解释一下这个问题?

【问题讨论】:

标签: python macos numpy scipy


【解决方案1】:

听起来好像您正在尝试使用来自 64 位 Python 的 32 位库。貌似有非官方的64-bit Numpy available for Snow Leopard


编辑:here 可用的 Python 2.6 .dmg 确实是 32 位的。 (具体来说,它是一个包含 i386 和 ppc 版本的通用二进制文件)。可用的常规 numpy 和 scipy .dmg 版本here 也是如此。 (我怎么知道?见下文!)因此,如果您将这些版本一起使用,应该没问题。

但你不好 - 所以我猜你没有使用你下载的 2.6 .dmg 中的 Python 版本。如果您正在运行一个可执行的 python 脚本,例如:

$ ./my-script.py

那么您可以尝试在命令行上明确指定您正在使用的 Python。看起来 MacPython .dmg 安装到 /usr/local/bin/python,所以试试:

$ /usr/local/bin/python2.6 myscript.py

有什么快乐吗?


我如何确定架构这些 .dmg 文件的内容是为...构建的......

  1. 安装 .dmg(即双击它打开一个卷)
  2. 使用 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
    
  3. 使用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
    

【讨论】:

  • python.org 的 python 安装程序不是构建为 32 位的吗?
  • 即使 python.org 安装程序是 32 位的,OS X python(默认安装)也可能是 64 位的。
【解决方案2】:

当我在 Mac OSX 10.6.8 上的 python2.7 中尝试新安装的 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 中安装后,我摆脱了此错误消息。

【讨论】:

    【解决方案3】:

    在我安装在 virtualenv 中之前,我遇到了 numpy 的问题,现在我没有任何问题。我肯定会建议尝试一下。

    【讨论】:

      【解决方案4】:

      对于雪豹 64 位,我使用了以下人员 http://blog.hyperjeff.net/?p=160 只需执行,您就可以开始了。 另请查看 cmets(新 AMD ...)

      构建 numpy 一直有效。但对于 scipy,您需要提供 numpy 配置文件。 安装 gfortran .....

      【讨论】:

        【解决方案5】:

        无需使用 MacPorts 或 Fink。

        使用Python 2.6 installerthis Numpy installer。我认为您需要先安装 Numpy,然后安装 Scipy,然后一切都会自动神奇地运行。我记得有一段时间,我需要明确地 append the path 到我的脚本顶部的 site-packages 目录,以便 Python 知道在哪里查找。

        【讨论】:

        • 什么代码给了你上面列出的错误?您以前是否尝试过自己构建任何这些包?您可能想从站点包中完全删除 numpy 和 scipy 文件夹,然后重试。
        【解决方案6】:

        在 OS X 上管理软件包的最佳方式是 Fink(不是 MacPorts :))。它们具有良好的 Python、NumPy 和 SciPy 支持。

        为什么要使用包管理器?因为您不仅会获得 NumPy 和 SciPy,还会获得许多其他您将不可避免地需要的程序,所有这些程序都只有一个入口点(基本上是管理器的安装命令)。这比必须寻找要安装的程序的特定编译版本要方便得多。

        为什么选择芬克?因为据说 Fink 比 MacPorts 更稳定,并且有更多的包。

        【讨论】:

        • 实际上,在 OS X 上管理包的最佳方式是 Homebrew(不是 Fink 或 MacPorts :))——不幸的是,目前它既没有列出 NumPy,也没有列出 SciPy。 :)
        • 哇。我不知道 OS X 包管理器存在这样的竞争。 (刚刚获得了我的第一次反对票!)你知道 Fink 和 MacPorts 是否可以在不打架的情况下同居,这样我就可以玩一会儿了吗?
        • @Josh:我猜你可以同时安装 MacPorts 和 Darwin 包:据我所知,Fink 将所有东西都安装在一个专用的 /sw 目录中。
        • MacPorts 和 Fink 软件包之间没有直接冲突,因为它们默认安装到不同的根目录,分别为 /opt/local//sw。然而,有一些软件包在其中一个或两个中都可用,它们的普通安装过程试图通过在 MacPorts 和 Fink 默认位置查找 3rd-party 库来变得聪明,并且可能没有被 MacPorts 或 Fink 定制以防止这种情况发生,这可能导致在使用来自错误包管理器的库不匹配的包中,并且由于不兼容的构建选项(拱门等)而导致执行失败。
        • ... 出于这个原因,从多个包管理器安装相同的包或包依赖项通常不是一个好主意(或者从源代码安装到 /usr/local ) 同时。一次只做一个,除非你真的很确定自己在做什么。
        【解决方案7】:

        如果这对某人有用,我在 OSX 上安装 numpy 的二进制文件时也遇到了问题。安装程序抱怨告诉我:

        您无法在此卷上安装 numpy 1.5.1。 numpy 需要安装 System Python 2.6。

        长话短说:“System Python”表示“来自python.org的python”,“2.6”表示真的 2.6,不是2.5,也不是2.7。所以,去找到numpy想要的python版本的安装程序,然后一切都很好。

        在我第一次尝试时,我将 numpy 的错误理解为告诉我我有一个过时的 python,所以我得到了最新版本(当时是 2.7),但 numpy 一直在抱怨。只有在仔细阅读该消息后,我才明白它真的想要 2.6 而不是任何其他版本。我丢弃了第一个安装(在/Library/Frameworks/Python.framework 中找到),然后安装了 2.6。最后 numpy 很高兴安装,一切都很好。

        【讨论】:

          【解决方案8】:

          我花了无数个小时浏览网页,试图让各种 python 包在 OS X 中运行。最后,我发现最简单的解决方案是完全切换到 Ubuntu 或在 OS X 中的 Virtualbox 中运行 Ubuntu(全部免费)。

          使用 Ubuntu 的包管理器 apt-get,几乎任何你想要的包都可以在一个简单的安装命令后立即运行。我第一次在不到一分钟的时间内启动并运行了 numpy、scipy 和 matplotlib,真是太着急了。

          $ sudo apt-get install python-numpy python-scipy python-matplotlib
          

          每次我这样做时,我仍然会感到短暂。不确定您想要的模块是否有 debian 软件包?通常有,你可以搜索,比如说,python 的 lxml 模块:

          $ apt-cache search lxml | grep python
          

          【讨论】:

            猜你喜欢
            • 2012-12-25
            • 2012-11-02
            • 1970-01-01
            • 2013-11-26
            • 1970-01-01
            • 2016-05-05
            • 2013-02-26
            • 1970-01-01
            • 2012-06-22
            相关资源
            最近更新 更多