【问题标题】:Should I use brew or pip for installing matplotlib?我应该使用 brew 还是 pip 来安装 matplotlib?
【发布时间】:2013-06-03 11:06:08
【问题描述】:

我使用的是 Mac OSX 10.8,之前我使用的是 macports,但我切换到了 brew。

Snows-MacBook-Pro:~ Mac$ brew search matplotlib
samueljohn/python/matplotlib

Snows-MacBook-Pro:~ Mac$ pip search matplotlib
matplotlib                - Python plotting package

所以我的问题很简单。 我应该使用 brew 还是 pip 来安装 matplotlib ? 有什么区别吗?

我的目标是让 pandas、ipythone notebook 和 simpleCV 启动并运行。

【问题讨论】:

    标签: python macos matplotlib homebrew


    【解决方案1】:

    我建议使用包管理器(确实是 brew 或 MacPorts)。以下是一些原因:

    • 如果您稍后使用包管理器(MacPorts、brew 等)安装依赖于 Matplotlib 的其他程序,包管理器将安装它不管。

    • 如果您通过 pip 安装 Python 包,并且 pip 将其安装在包管理器树(MacPorts、brew 等)中,包管理器可能会抱怨 >。例如,作为预防措施,MacPorts 不想删除 pip 安装的软件包,因此当 MacPort 检测到有人在其地盘上行走时,编译会停止。安装 Python 包的最佳方法是首先检查它们是否由包管理器提供,如果不是,则仅使用 pip 安装它们。

    • 使用 pip 编译有时会失败,其中包管理器(MacPorts,...)没有问题:包管理器只是更强大和更通用的工具(它们可以很好地与所需的编译库配合使用,例如实例)。

    • 我不建议使用单独的 Matplotlib 发行版,出于同样的原因:任何依赖于 Matplotlib 的 brew 程序都会安装它。此外,如果您想在没有包管理器的情况下安装这样的程序,通常很难使其与特定的 Matplotlib 发行版一起使用(他们可能需要在其顶部安装库等)。

    总之,我建议对所有事情使用一个系统(brew,因为这是您选择的),pip 用于该系统不提供的东西(只要确保你使用的 pip 对应于你想要的东西:你的包管理器的 Python 库,具有正确的版本,或者操作系统提供的 Python,...)。以我的经验,作为各种发行版/包管理器/等,增加工具和安装太麻烦了。通常并不意味着彼此玩得很好。

    【讨论】:

    • 快速回答是使用 brew。谢谢你的详细解释,它确实为我澄清了一些事情。
    • 谢谢。是的,我真的建议坚持使用您使用的任何包管理器。 (我重新格式化了文本,以使结论和要点更加突出。)
    • 有些东西似乎变了……自制软件中不再有 matplotlib 公式:github.com/Homebrew/homebrew-core/issues/22710
    【解决方案2】:

    由于您需要编译许多这样的包,这不是 Mac 上最简单的任务。我建议使用像Anaconda 这样的发行版。它是免费的,附带您需要的所有东西,并且有一个简单的安装程序。它会为您节省很多麻烦,因为所有组件都可以协同工作。

    【讨论】:

    • 我已经开始使用 brew,所以我也会尝试完成它。这只蟒蛇看起来很有前途。在 Windows 上,我使用 Active Python 并对此感到满意。您对Enthought 和Pythonxy 有何看法?
    • EPD 和 Python(x,y) (据我所知仅适用于 Windows)工作得同样好。没有巨大的差异。使用 EPD 和 Anaconda 时,一些更新工具等更加完善。
    • 我最后尝试了Anaconda,但没有成功。它支持开箱即用的pandas,但不支持simpleCV。
    【解决方案3】:

    Brew 没有干净的 matplotlib 端口; brew search matplotlib 找到的端口适用于 python2,而不是 python3。

    但是,Brew 的 python3 安装建议使用 pip3 来安装 python3 包。这会将 Python3 包安装到 /usr/local/lib/python3.3/site-packages。我认为 Brew 的方法可能比 MacPort 的方法更好,因为使用 MacPorts 我经常让 MacPorts 更新不需要更新的 python 包,而且它独立于 python 跟踪每个 python 版本让我有些困惑。

    但是,pip3 现在抱怨安装 matplotlib,说它是外部托管的,这是一个安全漏洞,将来会被禁用。

    【讨论】:

      【解决方案4】:

      编辑:恕我直言,virtualenv 和 virtualenvwrapper 现在已被 pyenv 和 pipenv 的出色组合所取代,它们结合起来提供了出色的隔离 python 版本和依赖项管理。即使您只想玩各种 python 包,也值得考虑设置虚拟项目。依赖关系被稳定地跟踪,并且 pipenv 包括检查包更新和安全问题的功能。我强烈建议切换。


      考虑在专用的 virtualenvs 中管理您的 python 包。您可以使用 Homebrew 安装任何非 python 依赖项(matplotlib 所需的 freetype),但最终使用 virtualenv 中的 pip 管理您的 python 包可能会更少头痛

      如果你使用的是系统python,你可以像这样安装matplotlib。我假设您想将 virtualenv 放在主目录的顶层,因此如果您想在其他地方创建 virtualenv,下面清单中的第一行可能会有所不同,您需要相应地调整剩余的行。

      cd ~
      sudo easy install pip
      sudo pip install virtualenv
      brew install pkg-config freetype
      virtualenv matplotlibenvironment
      source matplotlibenvironment/bin/activate
      

      如果/usr/local/include/freetype2 存在但/usr/local/include/freetype 不存在,则需要创建从freetype2 到freetype 的符号链接,以防止安装matplotlib 包时出错

      cd /usr/local/include
      ln -s freetype2 freetype
      

      最后,您可以使用 pip 安装 matplotlib。 点安装 matplotlib

      任何从之前创建的 virtualenv 运行的应用程序都可以导入 matplotlib。

      如果您决定广泛使用 virtualenvs,您可能想看看virtualenvwrapper,它提供了非常好的功能来管理多个 virtualenvs 并在它们之间切换。

      【讨论】:

        猜你喜欢
        • 2023-03-16
        • 1970-01-01
        • 2020-02-23
        • 2021-08-30
        • 1970-01-01
        • 1970-01-01
        • 2017-11-26
        • 2020-08-23
        • 1970-01-01
        相关资源
        最近更新 更多