新規MacユーザーがM1MacにPython(Miniforge)を導入する


はじめに

こんにちは.
Windowsを3年間使っていましたが,当時RやPython(Anaconda)のインストールはよくわかんないまま,先生に言われるがままインストールして,ぼちぼち使ってました.

Macが届いたのですが,大切に使いたくて,しっかり調べて自分で環境構築をやってみようと思いました.

調べたことを自分のためにまとめたいので初めて記事を書きます,よろしくお願いします.

購入したMac

  • macOS BigSur 11.2.2
  • MacBook Air (2021年4月到着)
  • メモリ 16GB
  • ストレージ 256GB

Pythonを入れたい

Pythonを入れたいけど・・・

Windowsを使っていた時,とりあえずAnaconda入れてJupyterを使っていました.
今回は複数バージョンのPythonを使いこなせるようになりたかったので環境を可変できるようにしたいと考えました.
(本を読んでいて実装するもバージョン違いでうまく動かなかった経験や,Python3.8/3.9を使い分けたほうが良さそうと考えたことから.)

以下,Dockerについてガン無視しているのですが,お手伝いしている研究室の方々がDockerで整えている環境でM1のせいでこれができない!?と水面下で困っている様子見ているので,とりあえずDocker考えるのはやめてます.そもそもDockerのことよくわかっていません.

Pythonを入れてjupyterに辿り着くまでの諸方法

過去の経験

【Windowsのとき】
Anaconda→Jupyter
★メリット:楽
★デメリット:要らないライブラリまで入っててデカイ

【CatallinaのMacのとき】(お手伝いしている研究室から借りている2014年製のMacbookAir)
Homebrew→Pythonいれてzsh上でJupyter
★M1以前のMacではこれが常套手段のはず・・・?

今回

【M1のMac】とにかくいっぱい方法がありました.
Homebrew→python
Homebrew→Anaconda→Jupyter
Homebrew→pyenv→Miniforge→Jupyter
Homebrew→anyenv→pyenv→Miniforge→Jupyter
Anaconda→Jupyter

★Homebrewを使うとうまくいかないらしい(自分で試していないので詳細不明)
★Anaconda使うとTensorflow動かないらしい(自分で試していないので詳細不明)

Miniforge→Jupyter
★これが推奨されているパターンが多かった.これにします.

★とにかく情報が錯綜している.
Python3.9だから〇〇のライブラリが動かない!と言っている記事や質問も見かけたけど,どうやらそれは環境構築時点でなにか間違っているのでは?と思えてきた.
また,Anacondaでぱぱっと環境構築しました〜までしか書かれておらず,どうやらいざデータを動かすぞいというときにトラブルが起こるであろうがそこまで試さずに記事をまとめているっぽい.

MiniforgeからPython3.8環境を作る

こちらのサイトを非常に参考にしました.

まずこちらからMiniforge3-MacOSX-arm64のシェルスクリプトをDLします.
この後からはターミナル上の作業です.

ディレクトリの移動

cd Downloads

先ほどDLしたシェルスクリプトでMiniforgeをインストールします.

bash Miniforge3-MacOSX-arm64.sh

Enter押したりyesを選択したりしました.

.zshrcを読み込みます.
これでcondaのbase環境が有効化されました.
コマンドの頭に(base)がついています.

source ~/.zshrc 

ターミナルを上げるたびにcondaのbase環境が出てきてしまうそうなのでデフォルトをfalseにします.

conda config --set auto_activate_base false

Python3.9環境にはまだしたくなかったのでとりあえずPython3.8環境を立ち上げときます.

conda create --name python38 python=3.8

このコマンドで立ち上げて

conda activate python38

このコマンドで停止することができます.

conda deactivate

activateされたままの状態で,次はこの環境下にjupyter labを入れたいと思います.
今まではjupyter notebookを使っていましたが,labが流行りらしいということと,タブ増えないし見た目もカッコええのでいいかなと考えました.
とりあえず今回のM1Macではしばらくjupyter labの上でPython生活を送りたいと思います.

conda install jupyterlab

installできたらさっそくお呼びしたいと思います.

jupyter lab

よろしくお願いします.

lab上のファイルでcondaを叩いて,numpy/pandas/matplotlib/sklearn/tensorflow/kerasも入れました.
各ライブラリで軽く動作確認をし,問題なく動くことがわかりました.今のところはこれで問題なさそうですが何か起こったらまたまとめたいと思います.
これで私のM1MacでのきらきらPythonライフがスタートしました.がんばります!

[備忘]調べていたときに出てきたが分からなかった言葉まとめ

こんなところからまとめると驚愕されそうだけど本当にわからないので.

Rosetta

  • AppleSiliconが搭載されるにあたり,IntelのCPUからArmのCPUになった.これらはCPUアーキテクチャが異なり,互換性がない.
  • このように,互換性のない2種類のCPU(x64/AppleSilicon)でソフトウェアを動せるようにするバイナリをユニバーサルバイナリという.
  • よってAppleSiliconに対応していないAppを使う時に,Rosettaがバックグラウンドで常に動作し,使用可能にする.
  • 初めて未対応Appを起動した時にダイアログが出て,Rosettaがインストールを促される(私はまだインストールしてません).
  • せっかくM1を買ったのでRosettaを使わない環境構築をしたい!しかしRのインストール時に出てきてしまい中断,ただいま別の方法を捜索中…

Xcode

  • Mac,iPhone,iPadなどのアプリケーション開発で使う統合開発環境.Appleがリリースしている.
  • AppStoreからインストールすると11.6GBくらいあるらしく大きい.
  • Homebrewのインストールに必要だが,AppStoreからでなくてCommand Line Toolsというのがあれば良いらしい.
  • とりあえずこれは入れておくことにしました.Python導入前に入れています.
xcode-select --install

これをターミナルに入力するだけですぐにできました.開幕は残り2時間24分と出て少し焦りましたが,すぐに減り,結局体感3分で終わりました.

Homebrew

ビールのアイコンのやつ.

  • Macのアプリケーションやコンポーネント,ライブラリなどの管理をするのパッケージ管理ツール
  • ホームブルーと読む(知ってる人の前で間違えたくない)
  • これを入れるためにはXcodeが必要
  • AppleSiliconにも対応したそうですが,まだ必要を感じなかったので入れていません.もう少し調べます.

参考にさせていただいた記事

本当にありがとうございました・・・!助かりました.

Python/Jupyterlabの導入までに参考になりました

環境構築についてわかりやすくまとまっていて大変参考になりました