python - 通过 Homebrew 软件在 macOS 上安装 numpy、scipy 和 matplotlib 的不同方法

标签 python numpy matplotlib scipy homebrew

今天我决定手动安装 python 和 scipy 堆栈,而不是像以前那样使用 Anaconda(或 Canopy)。我在我的 mac 上使用 Homebrew 软件,并通过 Homebrew 软件安装了 python2 和 python3(2.7 和 3.6)。但是通读文档,有多种安装 scipy 堆栈的方法,我想知道它们有什么区别。我对它们进行了独立测试,它们都能正常工作。

来自Homebrew documentation :
python2 -m pip install numpy scipy matplotlib
python3 -m pip install numpy scipy matplotlib
这两个命令与 Matplotlib installation docuentation 相同列出如何通过 Homebrew 软件安装 matplotlib。为什么这里分别使用pip(系统Python 2.7.x的pip)而不是pip2和pip3呢?是因为你先调用了python2/python3吗?

然而,SciPy documentation使用 homebrew 时安装这些模块是不同的:
brew tap homebrew/science && brew install numpy scipy matplotlib
(注意 matplotlib 公式位于 homebrew/science 存储库中,这就是您需要使用 brew tap 的原因。)

最后,通过 Homebrew 软件安装 python2 和 python3 时从命令行读出:
pip2 安装 numpy scipy matplotlib
pip3 安装 numpy scipy matplotlib
这是基于以下读数:

Pip and setuptools have been installed. To update them
  pip2 install --upgrade pip setuptools

You can install Python packages with
  pip2 install <package>

They will install into the site-package directory
  /usr/local/lib/python2.7/site-packages

See: https://docs.brew.sh/Homebrew-and-Python.html

...

Pip, setuptools, and wheel have been installed. To update them
  pip3 install --upgrade pip setuptools wheel

You can install Python packages with
  pip3 install <package>

They will install into the site-package directory
  /usr/local/lib/python3.6/site-packages

See: https://docs.brew.sh/Homebrew-and-Python.html

所以在四种文档来源之间,有三种不同的方法可以在使用 Homebrew 软件时安装 scipy,它们都可以工作;但是每一个有何不同,应该优先选择一个吗?

据我所知,第一个和第三个方法都调用 pip (pip2/pip3),它们在功能上是等效的——都调用 Homebrew 的 Python X.X.X 的 pip——但一个是隐式的,另一个是显式的。我认为这意味着这两种方法都以轮子的形式从 pip 安装预构建的二进制包。对于第二种方法,我认为它会为这些包安装 Homebrew 软件自己的公式(即由 Homebrew 软件在其存储库中单独维护)。

如果这是真的,那么我认为如果您使用的是 Homebrew 软件维护的 python 版本(即通过 brew install pythonpython3)。我的理由是,如果您稍后决定通过 homebrew 安装另一个具有任何 scipy 堆栈作为依赖项的公式,如果您之前使用 pip 安装它们,它将再次从 homebrew 的存储库安装这些模块。

如前所述,我不确定我的理解是否正确,而且我还没有找到任何答案,所以任何见解或确认将不胜感激。

最佳答案

您的分析似乎是正确的:变体 1 和 3 将从 python 包索引 (PyPI) 安装 numpy/scipy 并将使用预构建的轮子(如果适用于您的平台,它们很可能是)。 变体 2 安装 brew formula。

正如@Evhz 所提到的,用于 numpy 和 scipy 的 conda 包使用 Intel Math Kernel 库,与从 PyPI 或 brew 安装的包相比,它可以提供显着的加速(不仅仅是在 Intel 处理器上),bothwhich链接到 OpenBLAS .

关于首选哪种方法:这并不完全简单。

  • 是的,从表面上看,使用 brew 来管理 python 解释器和 python 包似乎是一致的。
  • 但是,homebrew 只提供了少量 python 包的公式,因此无论如何您最终都需要与 pip 混合使用。
  • 如果你想要性能,你可以使用 conda,它将管理解释器和 python 包。
  • 然而,也anaconda/conda-forge PyPI 仍有一些改进,因此您可能需要再次混合使用 pip

归根结底,没有完美的解决方案,但只要您有意识地选择一个解决方案,就不太可能遇到问题。

关于python - 通过 Homebrew 软件在 macOS 上安装 numpy、scipy 和 matplotlib 的不同方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46939140/

相关文章:

python - 如何使用 basemap 多边形的设置剪切路径

python - Pandas /matplotlib : change tick label format (force plain not scientific)

python - 如何在 PyGame 中集成折线图查看器?

python - 了解 4D ndarray 上高级多维索引的行为

python - 加快 while 循环匹配数组中的模式

python - 如何根据另一个系列拆分 pandas 中的系列

python - numpy中的多维累积和

python - 检查数组数组中数组是否存在 python

python - Grep 查找一个词,如果找到,打印模式匹配前 10 行和模式匹配后 10 行

Python pandas - 根据 NaN 计数阈值删除组