🐍

Mac/LinuxのPython環境をMiniForgeで構築

4 min read

Mac/LinuxのPython環境構築をMiniForgeで行う理由

※ 注意事項: この記事は、あくまで自分が個人の趣味として使うにはMiniForgeが良かったという内容です。業務での使用、Pythonのライブラリ開発者などは一切想定しておりませんので、その前提でご覧ください。

Pythonのパッケージ管理ソフト、様々なものがあります。pip,pipenv,poetry,virtualenv,pyenv,pyenv-virtualenv,Anaconda。地獄ですか、ここは…

なぜこんなにあるのか、それぞれの違いは以下の ばんくし さんのブログ記事がとても詳しくまとまっています。

https://vaaaaaanquish.hatenablog.com/entry/2021/03/29/221715

ただ、Apple Silicon Macになって状況は激変…pipで入れたパッケージ、動かないんです…そのあたりは、以下のZennの記事にとても詳しくまとまっています。

https://zenn.dev/osuzuki/articles/380be0f682d72d

自分なりの結論としては、Apple Silicon(M1 Mac等のArm CPU) Macを使うなら、Python環境はMiniForge一択ですね。Intel Macに関しては、MiniForgeに変えなくてもよいのですが、「Apple Silicon MacとIntel Macで共通にしたい」「Intel MacでもMini Forgeじゃないと動かないライブラリがある」といった理由からこれを機にIntel MacもPython環境はMiniForgeで構築することにしました。

最近は、Linux環境でもMiniForgeを使っていますが、pyenvと組み合わせて使っています。以下記事参照ください。

https://zenn.dev/karaage0703/articles/5af7ce4b8b1a8a

Mac/LinuxへのMiniForgeセットアップ方法

最初が、プラットフォームにより少し異なります。

Intel CPUの場合は、以下コマンドでMiniForgeをインストールします。

$ wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-x86_64.sh
$ bash Miniforge3-MacOSX-x86_64.sh

Apple Silicon Macの場合は以下コマンドでMiniForgeをインストールします。

$ wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh
$ bash Miniforge3-MacOSX-arm64.sh

Linux(X86 CPU)の場合は以下です。

$ wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
$ bash Miniforge3-Linux-x86_64.sh 

その他のプラットフォームに関しては、以下README参照ください。リストにあればインストールできると思います。

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

途中、いくつか質問が出てきますが、言われるがままにyesとかEnterを入力していればインストール完了します。

以降は、Intel Mac, Apple Silicon Macで共通です。以下コマンドでMiniForgeにPython3.8環境を構築します。

まず新しいターミナルを開きましょう(もしくは source ~/.bashrcを実行しましょう)。

そして以下コマンドで新しいPython仮想環境を構築します。

$ conda create --name python38 python=3.8

次に以下コマンドで作成した仮想環境をアクティベートします。これでPythonの仮想環境が使えるようになりました。

$ conda activate python38

MiniForgeを使いたくないときは、以下コマンドを実行しましょう。

$ conda deactivate python38

ライブラリのインストールは、基本的にはconda install xxxとMiniForgeのパッケージ管理でインストールする方が安定して動作するのでおすすめです。

動かなかったらpipでインストールします。

その他の使い方は、Condaの使い方を見ればよいのかな?(MiniForge自体のドキュメント、いまいち見当たりませんでした)。

https://conda.io/projects/conda/en/latest/user-guide/getting-started.html

condaのコマンド

よく使うのは、作成した環境の一覧を表示する以下コマンドです。

$ conda env list

その他は、公式の以下マニュアル参照ください。

https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html

pyenv/pyenv-virtualenv等を入れていた場合

MiniForgeと競合してうまく動かない場合があるようです。Macの場合は、以下コマンドでアンインストールしましょう。

$ brew remove pyenv-virtualenv
$ brew remove pyenv

~/.bashrc~/.zshrcに記載している設定も合わせて消しておきましょう。

miniforgeをアンインストールする方法

miniforgeをアンインストールしたい場合は、以下コマンドで可能です。

$ rm -rf $(conda info --base)
$ rm -rf ~/.conda

加えて~/.bashrcに以下のようにconda initializeで囲まれたcondaの設定スクリプトが書かれているので、エディタで手動で削除しておきましょう。

# >>> conda initialize >>>
# <<< conda initialize <<<

また、自分の環境ではJupyter Lab(Notebook)が以下のようなエラーで起動しなくなることがありました。

/home/<user name>/miniforge3/envs/<env name>/bin/python3: 誤ったインタプリタです: そのようなファイルやディレクトリはありません

~/.local/bin/jupyterのPythonパスがminiforgeになっていたので、以下のように修正したら直りました。

#!/usr/bin/env python

Dockerを使ったPython環境構築

環境構築は、Dockerを使う方法もあります。こちらの方がより隔離性の高い使い捨ての環境を手軽に作れます。Dockerに関しては以下記事参照ください。

https://karaage.hatenadiary.jp/entry/2019/05/17/073000

VS CodeエディタのRemote Containersを使う方法も便利です。こちらは、また別途まとめたいと思っています。とりあえず参考になりそうな記事を列挙しておきます。

https://qiita.com/IchiLab/items/c5660c96855d3f4b06a6

https://zenn.dev/karaage0703/books/80b6999d429abc8051bb

https://qiita.com/sonoisa/items/6d6b4a81169397a96dd8

https://zenn.dev/karaage0703/articles/1bdb8930182c6c

まとめ

MacのPython環境構築に関して書きます。AnacondaからPyenvに行った後、Poetryなどに行かずまたAnaconda系に回帰するという…歴史は繰り返すといったやつでしょうか。
そのうちApple Silicon Macのライブラリをpipで簡単に入れられるようになれば、またMiniForgeなども不要になっていくのかなーとか思ったりしています。

関連リンク

参考になりそうな新し目の情報へのリンクです。まだ自分で試していないものも含まれています。

https://qiita.com/go_new_innov/items/eb90338c72d8bcfb2046

https://blog.amedama.jp/entry/apple-silicon-python-miniforge

関連記事

Apple Silicon Macでディープラーニング環境まで構築する場合は、以下記事参照ください。

https://zenn.dev/karaage0703/articles/0ab9e654cfb0ec

変更履歴

  • 2021/10/04 Linuxでの環境構築に関して追記

Discussion

ログインするとコメントできます