LinuxでminicondaによるPython仮想環境を構築する

機械学習を始めようかな、という事でminicondaによるPython仮想環境構築を行った。備忘録としてメモ書きしておく。

スポンサーリンク

minicondaとは?

minicondaはパッケージ管理システムcondaを使ったPython仮想環境構築の仕組み。少し前、condaをベースに機械学習に必要な周辺ツールをまるっとセットにした統合環境Anacondaで「商用利用が有償化」されると騒ぎになった。minicondaなら最低限のPython仮想環境が提供されるだけなので平気と思っていたが、使うリポジトリに注意しないとminicondaでもライセンス違反になるようで、そのへん留意しておいた方が良さそう。

minicondaのインストール

自分が普段使いしているUbuntuではパッケージマネージャ(dpkg)による配布は無いため、手動でシェルスクリプトによるインストールが必要。下記ダウンロードサイトに各種プラットフォームのインストーラが置かれており、それをダウンロードしてインストールする。

Miniconda — Anaconda documentation

コマンドとしては以下のような感じ。

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh

シェルスクリプトを実行後の流れは以下。

  1. Enterを入力するとライセンス条件が表示される
  2. ライセンス条件への同意が求められる(yesを入力)
  3. インストール先の確認(デフォルトは~/miniconda3)。デフォルトで良ければEnter入力。
  4. シェル起動時に自動起動するかどうかの設定(デフォルトはno)

PYTHONPATH環境変数設定時は要注意

PYTHONPATH環境変数が設定されているとPython実行時にsys.pathにパスが追加される。これがminicondaに悪さをするらしく、自分の環境では何故か設定されていたため手動で対応。

conda環境の手動有効化

シェル起動時の自動起動を選ばなかった場合は、以下のコマンド実行でcondaのベース環境を有効化させる。

eval "$(~/miniconda3/bin/conda shell.bash hook)"

手打ちするのはちょっと面倒くさい感じなので、.bashrcにaliasを追加して”condaenv”で有効化出来るように。

alias condaenv='eval "$(~/miniconda3/bin/conda shell.bash hook)"'

リポジトリの設定

ライセンスの問題があるため、こちらの記事に倣ってdefaultsではなくconda-forgeを使うようリポジトリの切り替えを行う。

conda config --remove channels defaults
conda config --add channels conda-forge

以下のようになればOK。

$ conda config --show channels
channels:
  - conda-forge

仮想環境を構築する

仮想環境の新規作成

condaを有効化した状態で、下記コマンドで新しい環境”myenv”を作成する。

conda create --name myenv python=3.11

すると指定したバージョンのPythonを実行するための最低限のパッケージが準備され、”Proceed ([y]/n)?”と聞いてくるので、yと答えると新しい仮想環境が構築される。

仮想環境の起動/終了

作成した環境を起動するには、以下を実行。

conda activate myenv

以下を実行すると、環境を閉じて元(base環境など)に戻れる。

conda deactivate

パッケージのインストール

ターゲット環境を起動した状態でconda installでインストールする。

conda install jupyter scikit-learn

これでとりあえずJupyter notebookとscikit-learnが使えるようになる。Pythonのバージョン指定によっては、壊れた実行環境がインストールされる場合もあるようだ(実際、Python3.10指定で環境構築したら、jupyterが動作しなかった)。

yamlファイルに環境設定を保存する

上記一連の操作で作った仮想環境の設定をyamlファイルに保存出来る。

conda env export -n myenv > myenv.yml

保存したyamlファイルを使って仮想環境再構築

保存したyamlファイルを指定して、仮想環境の再構築も出来る。

conda env create -f foo.yml

conda基本コマンド一覧

コマンド説明
conda info -e作成済み仮想環境の一覧表示
conda activate foo仮想環境fooに切り替え
conda deactivate仮想環境から出る
conda env remove -n foo仮想環境fooの削除
conda install fooパッケージのインストール

まとめ

Python仮想環境の構築にはconda以外にも色々選択肢があり、だいぶ前にpyenvによる方法なども試したことがあるが、環境が壊れやすい上に作った環境を保存する簡単な方法が無かったりで使い勝手がイマイチだった。

対照的にcondaなら出来損ない仮想環境をまるっと削除しながらトライ&エラーしても他の仮想環境に影響しないし、作った仮想環境のスナップショットをyamlファイルに保存する手段も提供されている。コマンド体系も洗練されていてわかりやすく、使い勝手は非常に良い。当面Python環境構築でお世話になりそうだ。

コメント