UPDATE: scikit-learn
now works via pip β
Just first brew install openblas
- it has instructions for different processors (wikipedia)
brew install openblas
export OPENBLAS=$(/opt/homebrew/bin/brew --prefix openblas)
export CFLAGS="-falign-functions=8 ${CFLAGS}"
# ^ no need to add to .zshrc, just doing this once.
pip install scikit-learn
Worked great on Apple Silicon M1 π
Extra details about how Pip works
Pip downloaded the source from Pipy, then built the wheel targeting MacOS X 12.0, and arm64 (apple silicon): scikit_learn-1.0.1-cp38-cp38-macosx_12_0_arm64.whl
.
Building wheels for collected packages: scikit-learn
Building wheel for scikit-learn (pyproject.toml) ... done
Created wheel for scikit-learn: filename=scikit_learn-1.0.1-cp38-cp38-macosx_12_0_arm64.whl size=6364030 sha256=0b0cc9a21af775e0c8077ee71698ff62da05ab62efc914c5c15cd4bf97867b31
Successfully built scikit-learn
Installing collected packages: scipy, scikit-learn
Successfully installed scikit-learn-1.0.1 scipy-1.7.3
Note on Pipy: we usually download either a pre-built wheel (yay, this is excellent for reliable distribution and ensuring compatability). Or, if no prebuilt wheel exists (sad) then we download a tar.gz and build it ourselves. This happens because the authors don't publish a prebuilt wheel to Pipy, but more and more people are adding this to their CI (github actions) workflow. Building the wheel ourselves takes more cpu time, and is generally less reliable but works in this case.
Here we are downloading a pre-built wheel that has very few limitations: it works for any version of python 3, for any os, for any architecture (like amd64 or arm64): click-8.0.3-py3-none-any.whl
Collecting click>=7.0
Downloading click-8.0.3-py3-none-any.whl
Here apparently we had no wheel available, so we have to build it ourselves with setuptools
running setup.py
.
Collecting grpcio>=1.28.1
Downloading grpcio-1.42.0.tar.gz (21.3 MB)
|ββββββββββββββββββββββββββββββββ| 21.3 MB 12.7 MB/s
Preparing metadata (setup.py) ... done
## later in the process it installs using setuptools
Running setup.py install for grpcio ... done
Good luck and happy piping.
pip
has a--no-use-pep517
option. See if that works. β Blessed