JavaScriptを有効にしてください

Condaの仮想環境をYAMLファイルに保存する

 ·   5 min read

はじめに

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 installpip 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ファイル

前節のコマンドを実行すると、以下のようなファイルがカレントディレクトリに出力される。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
name: myenv
channels:
  - defaults
dependencies:
  - ca-certificates=2021.4.13=haa95532_1
  - certifi=2020.12.5=py39haa95532_0
  - openssl=1.1.1k=h2bbff1b_0
  - pip=21.1.1=py39haa95532_0
  - python=3.9.5=h6244533_3
  - setuptools=52.0.0=py39haa95532_0
  - sqlite=3.35.4=h2bbff1b_0
  - tzdata=2020f=h52ac0ba_0
  - vc=14.2=h21ff451_1
  - vs2015_runtime=14.27.29016=h5e58377_2
  - wheel=0.36.2=pyhd3eb1b0_0
  - wincertstore=0.2=py39h2bbff1b_0
  - pip:
    - casadi==3.5.5
prefix: C:\Users\XXXXX\Anaconda3\envs\myenv

詳細を述べる。

name: 仮想環境の名前

channels: ライブラリをインストールするチャンネル。
conda-forgeチャンネルを追加したり、変更したりできる。

dependencies: Pythonやライブラリのバージョン。
pipでインストールしたライブラリは、pipの下の階層になる。

prefix: 仮想環境の実体ファイルがあるディレクトリ。

YAMLファイルを配布用に編集する

前節のYAMLファイルを他のユーザに渡しても良いが、ライブラリのハッシュ値やディレクトリの指定があり、使いづらい。
YAMLファイルは一部を編集しても環境を再構築可能であるため、読みやすくなるように編集する。
編集する点は以下の3点。

  • 必要最低限のライブラリを記述する(condaがライブラリ間の依存関係を解決してくれる)。
  • バージョンの後ろのハッシュ値を削除する。
  • prefixを削除する(そのまま配布するとユーザ名が分かってしまう)。

簡潔に記述したYAMLファイルは以下になる。

1
2
3
4
5
6
7
8
name: myenv
channels:
  - defaults
dependencies:
  - python=3.9.5
  - pip=21.1.1
  - pip:
    - casadi==3.5.5

ちなみに、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形式のファイルから環境を構築

参考

シェアする

Helve
WRITTEN BY
Helve
関西在住、電機メーカ勤務のエンジニア。X(旧Twitter)で新着記事を配信中です

サイト内検索