conda環境のセーブとリストア
pipの環境はpip freezeを使った環境の保存と再構築の方法があります。
同様のことをAnacondaやMinicondaで作った環境(conda環境)でもできないか調べたところ、公式マニュアル にあったのでメモしておきます。
本記事での環境
Anaconda3/Miniconda3 4.3.30
方法
方法は2通りあります。
2の方法の方が利点が大きいです。
1. conda を使った方法
保存
conda list --explicit > env_name.txt
再構築(新規に環境をつくる場合)
conda create -n [env_name] --file env_name.txt
再構築(既存の環境に足す場合)
conda install --name [env_name] --file env_name.txt
公式マニュアル によると、こちらの方法は、エクスポートしたマシンと同じOS・アーキテクチャのマシン上の移行に使う必要があるとのことです。
エクスポートしたtxtファイル内にエクスポートしたマシンのOS・アーキテクチャ情報が入っています。
上記再構築のコマンドは、実行時にOS・アーキテクチャのチェックはしないので注意する必要があります。
2. conda env を使った方法
保存
conda env export -n [env_name] > env_name.yml
再構築
conda env create -f=env_name.yml
こちらの方法は1と違い、アーキテクチャに依存しません。別のOS・アーキテクチャのマシン上へも移行できます。
※2018/5/22追記 別のOSだとcondaやpipのリポジトリの内容が異なるため、そのまま移行はほぼ不可能でした。同種別OSの別バージョンへの移行までが現実的と思われます。
また、condaパッケージだけでなくpipパッケージの情報も入っているので、pip含めて全環境を移行できます。
でもこちらはおそらく、既存の環境にパッケージ追加、はできません。あくまで移行用。
※2018/5/22追記 ymlに書き足せば追加できるし、当然ながら環境構築後に個別で追加・削除もできます。
備考
- whlファイルでしか入れられなくて後から入れたパッケージがあると再構築コマンドがエラーになるので、その時は上記の保存コマンドで生成したyamlファイルから該当パッケージの行を削除して実行する必要があります。