※記事内に商品プロモーションを含むことがあります。
はじめに
Condaで構築した仮想環境をYAML形式のファイルに保存し、再構築する方法を解説する。
Conda (Anaconda/Miniconda) では、仮想環境を構築して、プロジェクトごとにPythonやライブラリのバージョンを管理できる。
仮想環境の設定はYAML形式のファイルに保存することができ、Gitなどを経由して他のユーザと共有が可能である。
この記事では、以下を解説する。
- 仮想環境の構築
- YAMLファイルの出力
- YAMLファイルの編集
- YAMLファイルを使った仮想環境の復元
実行した環境は以下の通り。
- Windows 10 Ver. 2004
- Anaconda 2020.11
- conda 4.10.0
仮想環境の構築
始めに、コマンドを使って仮想環境を構築する方法を述べる。
Anaconda Powershell Prompt(Anaconda Promptも可)を起動し、以下のコマンドを実行して仮想環境を新規作成する。
(base) > conda create -n <ENVIRONMENT NAME>
<ENVIRONMENT NAME>
は仮想環境の名前である。以下ではmyenv
とする。
また、-n
は--name
としてもよい。
なお、作成した仮想環境にはPythonやライブラリはインストールされていない。
仮想環境に入ってインストールすることも可能であるが、conda create
コマンドでインストールするには、以下のようにする。
末尾にpython
を付けると、condaが対応している最新版のPythonが仮想環境にインストールされる。
(base) > conda create -n <ENVIRONMENT NAME> python
以下のようにバージョンを指定したり、ライブラリをインストールすることも可能である。
(base) > conda create -n <ENVIRONMENT NAME> python=3.7 numpy=1.19.2 pandas
仮想環境の一覧を表示するには以下を実行する。
(base) > conda env list
# conda environments:
#
base * C:\Users\XXXXX\Anaconda3
myenv C:\Users\XXXXX\Anaconda3\envs\myenv
作成した仮想環境に入る(アクティベートする)には、以下を実行する。
仮想環境に入ると、プロンプト>
の前がbase
から仮想環境の名前に変化する。
(base) > conda activate myenv
(myenv) >
仮想環境中では、conda install
やpip install
でライブラリをインストールできる。
仮想環境から出るには以下を実行する。
(myenv) > conda deactivate
(base) >
仮想環境を削除するにはconda remove
を実行する(仮想環境の名前を-n
で指定)。
(base) > conda remove -n myenv
YAMLファイルの出力
仮想環境の設定をYAMLファイルに出力するには、仮想環境に入って以下を実行する。
(myenv) > conda env export > myenv.yml
myenv.yml
は保存ファイル名であり、自由に名前を付けてよい(拡張子もyml
とする必要はない)。
2つめの>
は、コマンドプロンプトのリダイレクトである。
YAMLファイルの詳細は次節で述べる。
仮想環境YAMLファイル
前節のコマンドを実行すると、以下のようなファイルがカレントディレクトリに出力される。
|
|
詳細を述べる。
name
: 仮想環境の名前
channels
: ライブラリをインストールするチャンネル。
conda-forge
チャンネルを追加したり、変更したりできる。
dependencies
: Pythonやライブラリのバージョン。
pipでインストールしたライブラリは、pip
の下の階層になる。
prefix
: 仮想環境の実体ファイルがあるディレクトリ。
YAMLファイルを配布用に編集する
前節のYAMLファイルを他のユーザに渡しても良いが、ライブラリのハッシュ値やディレクトリの指定があり、使いづらい。
YAMLファイルは一部を編集しても環境を再構築可能であるため、読みやすくなるように編集する。
編集する点は以下の3点。
- 必要最低限のライブラリを記述する(condaがライブラリ間の依存関係を解決してくれる)。
- バージョンの後ろのハッシュ値を削除する。
prefix
を削除する(そのまま配布するとユーザ名が分かってしまう)。
簡潔に記述したYAMLファイルは以下になる。
|
|
ちなみに、pipを使用してライブラリをインストールする場合は、きちんとcondaのライブラリとしてpipを明示しておく(上の例の- pip=21.1.1
の部分)。
明示しておかないと、仮想環境を復元するときに以下のエラーが出てくる。
Warning: you have pip-installed dependencies in your environment file, but you do not list pip itself as one of your conda dependencies. Conda may not use the correct pip to install your packages, and they may end up in the wrong place. Please add an explicit pip dependency. I’m adding one for you, but still nagging you.
(意訳)pipでインストールするライブラリを環境設定ファイルに指定する場合、condaでインストールするライブラリにpipを指定してください。conda側で自動的にpipをインストールしておきますが、pipのバージョン違い等によって、予期せぬ結果になる可能性があります。
YAMLファイルを使った仮想環境の復元
YAMLファイルから仮想環境を復元するには、以下を実行する。
> conda env create -f myenv.yml
-f
は--file
としても良い。
まとめ
Condaで仮想環境をYAML形式で保存、読み込む方法をまとめた。
この記事で使用したコマンド一覧を以下に示す。
> conda create -n <ENVIRONMENT NAME> [package_spec] # 仮想環境を新規作成
> conda env list # 仮想環境の一覧を表示
> conda activate <ENVIRONMENT NAME> # 仮想環境に入る
> conda deactivate # 仮想環境から出る
> conda remove -n <ENVIRONMENT NAME> # 仮想環境を削除
> conda env export > <FILE NAME> # 現在の環境の設定をYAML形式で出力
> conda env create -f <FILE NAME> # YAML形式のファイルから環境を構築