Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

M1 macOS で python + numpy/scipy/pandas/matplotlib/jupyterlab 環境構築のメモ(2020/12/24 時点)

M1 macOS で arm64 native な python と numpy/scipy/matplotlib, Jupyter-lab など入れてデータサイエンスしたい.

現状だと x86 の時と同じやり方でインストールしようとすると, M1(arm64) の場合はコンパイルがコケたりなどしてうまく行きません
(pip とか, macports 経由とかでインストールとか)

例えば altivec(みんな知っているかな!) コンパイルフラッグが clang 未サポートで numpy ビルドできないなどの issue があります.

https://github.com/numpy/numpy/issues/17807

いずれ時が解決するでしょうが, 待つのもめんどいです.
ソースからビルドするのはもっとめんどい.

ぺろっとお手軽に Arm64 native なデータサイエンス環境セットアップしたいですよね.

miniforge

Apple Silicon, run Scikit-Learn and TensorFlow on the new Macs M1
Run Machine Learning tools natively compiled for Apple Silicon
https://towardsdatascience.com/new-apple-silicon-m1-macbook-air-the-dream-laptop-for-machine-learning-engineers-a1590fbd170f

で動作確認されているように, miniforge を使います. もともと Raspberry Pi むけなどを想定して Arm64 版がパッケージング & メンテされているようですので, M1 でも問題なく動いてくれます.

https://github.com/conda-forge/miniforge

arm64 版の osx インストーラー使います.

あとは普通に (mini)conda として使えます.

conda create -n myenv python=3.9
conda activate myenv

などとして環境にはいり,

conda install numpy

として arm64 な numpy インストールできます!

Screen Shot 2020-12-16 at 3.36.53.png

Voila! :tada:

最初に起動に少し時間がかかるのですが, Rosetta2 ではなく何か別ので時間がかかっている...はず?(__pycache__ 生成とか?)

matplotlib

特に問題なく動きました.

https://docs.scipy.org/doc/scipy/reference/tutorial/interpolate.html

を参考に, numpy/scipy/matplotlib を使うスクリプトを動かしてみます.

import numpy as np
from scipy.interpolate import interp1d
x = np.linspace(0, 10, num=11, endpoint=True)
y = np.cos(-x**2/9.0)
f = interp1d(x, y)
f2 = interp1d(x, y, kind='cubic')

xnew = np.linspace(0, 10, num=41, endpoint=True)
import matplotlib.pyplot as plt
plt.plot(x, y, 'o', xnew, f(xnew), '-', xnew, f2(xnew), '--')
plt.legend(['data', 'linear', 'cubic'], loc='best')
plt.show()

Screen Shot 2020-12-25 at 1.33.17.png

:tada:

Macで使うmatplotlibのbackendエラー
https://qiita.com/typecprint/items/0d4bea1251ab3f816303

ありがとうございます.

miniforge ではデフォルト MacOSX(native?) backend のようです.

必要であれば, 上記リンクを参照し, matplotlibrc ファイルを編集して backend を変更しましょう.

WebAgg などのネットで画面を飛ばすのも試してみるといいかもしれません.

Jupyter-lab

https://forum.pine64.org/showthread.php?tid=10299

にありますように, Arm64 環境では miniforge が recommended のようで, 同様に miniforge の conda でそのままインストールできます!

$ conda activate myenv
$ conda install jupyterlab

あとは普通に jupyter-lab で起動するだけです!

Screen Shot 2020-12-25 at 2.00.42.png

Ultra super cooooooooooooool!!!!!! :tada:

動作しないもの

macports になりますが, ffmpeglibvpx が arm64 未対応のためインストールできませんでした.

ffmpeg を使って動画を作る場合は, しばらくは x86-64 版でしょうか.

TODO

  • matplotlib の画面表示(backend)をどうすれば良いか調べる(そのままだと何も表示されない 何か plot させてから show しないとウィンドウ出ないだけだった)
  • Jupyterlab の extension(e.g. interactive widgets, vim keybinding)が動くか確認する
  • ファンレス M1 Macbook Air を持って山に籠り, ひとりでできるもんデータサイエンティスト Youtuber として生計を立てるスキームを確立する旅に出たい
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away