【问题标题】: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 并对此感到满意。您对EnthoughtPythonxy 有何看法?
    • 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 现在已被 pyenvpipenv 的出色组合所取代,它们结合起来提供了出色的隔离 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
        相关资源
        最近更新 更多