😥

M1 Macで分析環境構築してみたらあまり上手くいかない件

2021/04/21に公開

M1 MacだとPythonのライブラリインストールが上手くいかないものもあるらしく、実際苦戦したので備忘録としてまとめます。

仮想環境の立ち上げ

失敗したら嫌なので仮想環境を立ち上げてからその配下にライブラリをインストールしてみる。

仮想環境を立ち上げる前に

念のため、Homebrewをアップデート。

brew update

Python3をインストール。

brew install python

デフォルトで3系がインストールされるため、python3と明示する必要はないそうです。

Pythonのバージョンを確認。

python -V


無事にインストールされている。

venvで構築

仮想環境について調べてみると、今までのPython3.3, 3.4はpyenvが推奨されていたが今は非推奨のため今回はvenvで実行。

仮想環境用のフォルダを作って、カレントディレクトリを変更。
今回はtestディレクトリを作成。

mkdir test
cd test

testディレクトリ配下で新しく環境を立ち上げる。

python3 -m venv [環境名]

仮想環境の有効化

source [環境名]/bin/activate

これでコマンドプロンプトの名前の前に([環境名])がつきます。

仮想環境の無効化

deactivate

無効化はdeactivateと非常に簡単。

venvの注意点

venvはライブラリのインストールをディレクトリごとに行いたいときに使える。
ただし、venvで構築した仮想環境のPythonバージョンはローカルのバージョンとなるため、Pythonのバージョンも変えたい場合には向いていない。
ただ、公式ドキュメントを見てみると、複数インストールされている場合、指定して実行することで変更可能とのこと。

仮想環境の作成と管理を行うためのモジュールが venv です。 venv は通常利用可能なもっとも新しいバージョンの Python をインストールします。複数のバージョンの Python がインストールされている場合、 python3 のように利用したいバージョンを指定して実行することで Python バージョンを選択できます。
https://docs.python.org/ja/3/tutorial/venv.html

ライブラリのインストール

仮想環境も立ち上げたところで、早速ライブラリをインストールしていきます。
会社で使っていた主要なライブラリを検証しています。
画像解析系は未経験なので入れていません。

対象ライブラリ

  • numpy
  • scipy
  • pandas
  • matplotlib
  • jupyter-notebook
  • scikit-learn
  • seaborn
  • tensorflow
  • janome
  • xgboost
  • Django

環境

Python:3.9.4
pip:21.0.1

numpy

numpyは普通にインストールできん!
cythonをインストールして下記のコマンドを入力するとインストールできた。

pip install cython
pip install --no-binary :all: --no-use-pep517 numpy

scipy

scipyはだめでした。

pandas

gitからcloneしてインストールできた。

git clone https://github.com/pandas-dev/pandas.git
cd pandas
python setup.py install

matplotlib

pipでインストールできた。

pip install matplotlib

jupyter-notebook

jupyterは特に問題なくインストールできた。

pip install jupyter

scikit-learn

sciki-learnはだめ。

seaborn

seabornもだめ。

tensor-flow

tensorflowもだめ。

janome

janomepipからインストールできた。

pip install janome

xgboost

xgboostもだめ。

Django

Djangopipからインストールできた。

pip install django

まとめ

時間が経ったから大丈夫だろうと思っていましたが、M1 Macは環境構築でまだまだ苦労しますね。
インストールの方法は別途調べてインストールしたいと思います。
最悪Anacondaという手もありかな。

Discussion