在苹果 m1 上安装 scipy 和 scikit-learn

jps*_*ter 28 python scipy scikit-learn apple-m1

在 m1 芯片上安装以下软件包:Numpy 1.21.1、pandas 1.3.0、torch 1.9.0 和其他一些软件包对我来说效果很好。在测试时它们似乎也能正常工作。但是,当我尝试通过 pip 安装 scipy 或 scikit-learn 时,会出现此错误:

错误:numpy 构建轮子失败

构建 numpy 失败

错误:无法为使用 PEP 517 的 numpy 构建轮子,并且无法直接安装

当我已经安装了 pip 的最新版本时,为什么要再次构建 Numpy?

python3.9 -m pip install ...之前的每个安装都是在配备Apple m1 芯片的 Mac OS 11.3.1 上完成的。

也许有人知道如何处理这个错误,或者这只是时间问题。

Und*_*ern 45

更新:scikit-learn现在可以通过 pip \xe2\x9c\x85 运行

\n

首先brew install openblas- 它有针对不同处理器的说明(维基百科

\n
brew install openblas\nexport OPENBLAS=$(/opt/homebrew/bin/brew --prefix openblas)\nexport CFLAGS="-falign-functions=8 ${CFLAGS}"\n# ^ no need to add to .zshrc, just doing this once.\npip install scikit-learn\n
Run Code Online (Sandbox Code Playgroud)\n

在 Apple Silicon M1 上表现出色

\n

有关 Pip 工作原理的更多详细信息

\n

Pip 从 Pipy 下载了源代码,然后构建了针对 MacOS X 12.0 和 arm64(苹果芯片)的轮子:scikit_learn-1.0.1-cp38-cp38-macosx_12_0_arm64.whl.

\n
Building wheels for collected packages: scikit-learn\n  Building wheel for scikit-learn (pyproject.toml) ... done\n  Created wheel for scikit-learn: filename=scikit_learn-1.0.1-cp38-cp38-macosx_12_0_arm64.whl size=6364030 sha256=0b0cc9a21af775e0c8077ee71698ff62da05ab62efc914c5c15cd4bf97867b31\nSuccessfully built scikit-learn\nInstalling collected packages: scipy, scikit-learn\nSuccessfully installed scikit-learn-1.0.1 scipy-1.7.3\n
Run Code Online (Sandbox Code Playgroud)\n

关于 Pipy 的注意事项:我们通常会下载一个预构建的轮子(是的,这对于可靠的分发和确保兼容性非常有用)。或者,如果不存在预构建的轮子(悲伤),那么我们下载一个 tar.gz并自己构建它。发生这种情况是因为作者没有向 Pipy 发布预构建的轮子,但越来越多的人将其添加到他们的 CI(github 操作)工作流程中。自己构建轮子需要更多的 CPU 时间,并且通常不太可靠,但在这种情况下可以工作。

\n

在这里,我们下载一个预构建的轮子,它几乎没有任何限制:它适用于任何版本的 python 3、任何操作系统、任何体系结构(如 amd64 或 arm64):click-8.0.3-py3-none-any.whl

\n
Collecting click>=7.0\n  Downloading click-8.0.3-py3-none-any.whl\n
Run Code Online (Sandbox Code Playgroud)\n

显然我们没有可用的轮子,所以我们必须自己用setuptoolsrunning来构建它setup.py

\n
Collecting grpcio>=1.28.1\n  Downloading grpcio-1.42.0.tar.gz (21.3 MB)\n     |\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 21.3 MB 12.7 MB/s\n  Preparing metadata (setup.py) ... done\n\n## later in the process it installs using setuptools \nRunning setup.py install for grpcio ... done\n
Run Code Online (Sandbox Code Playgroud)\n

祝你好运,管道快乐。

\n

  • 无法为 m1 pro 安装 `scikit-learn==0.24.1`,但 1.1 可以 (2认同)

小智 13

最后设法使用以下步骤对此进行排序:

\n
    \n
  1. 使用brew\xe2\x80\xa8安装python 3.9 (brew install python@3.9)
  2. \n
  3. 设置 PATH 首先选择brew python3 (export PATH=opt/homebrew/bin:$PATH)
  4. \n
  5. 运行以下命令来安装 scipy 和 scikit-learn
  6. \n
\n
\n\n    >> /opt/homebrew/bin/brew install openblas\n    >> export OPENBLAS=$(/opt/homebrew/bin/brew --prefix openblas)\n    >> export CFLAGS="-falign-functions=8 ${CFLAGS}"\n    >> git clone https://github.com/scipy/scipy.git\n    >> cd scipy\n    >> git submodule update --init\n    >> /opt/homebrew/bin/pip3 install .\n    >> /opt/homebrew/bin/pip3 install scikit-learn\n\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 进入需要创建并运行虚拟环境的文件夹python3 -m venv --system-site-packages .venv
  2. \n
\n


BLi*_*ess 11

截至 2022 年 3 月 14 日(馅饼日!),我所要做的就是在 conda 环境中输入以下内容:

conda install --channel=conda-forge scikit-learn
Run Code Online (Sandbox Code Playgroud)

就是这样。我正在 conda 环境中运行配备 MacOS 11.6 和 python 3.8 的 MacBook Pro(13 英寸,M1,2020)。