web-dev-qa-db-ja.com

.ymlファイルで既存のConda環境を更新する方法

既存のconda環境を別の.ymlファイルで更新するにはどうすればよいですか。これは、複数の要件ファイル、つまりbase.yml, local.yml, production.ymlなどを含むプロジェクトで作業する場合に非常に役立ちます.

たとえば、以下はbase.ymlファイルにconda-forge、conda、およびpipパッケージがあります。

base.yml

name: myenv
channels:
  - conda-forge
dependencies:
  - Django=1.10.5
  - pip:
    - Django-crispy-forms==1.6.1

実際の環境は、conda env create -f base.ymlで作成されます。

後で、base.ymlに追加のパッケージを追加する必要があります。別のファイル、たとえばlocal.ymlは、それらの更新をインポートする必要があります。

これを達成するための以前の試みには以下が含まれます。

インポート定義でlocal.ymlファイルを作成する:

channels:

dependencies:
  - pip:
    - boto3==1.4.4
imports:
  - requirements/base. 

そして、コマンドを実行します:conda install -f local.yml

これは動作しません。何かご意見は?

68
tilikoom

conda env update を使用してみてください:

source activate myenv
conda env update --file local.yml
104
alkamid

alkamidの答えは正しい行にありますが、環境が既にアクティブである場合、Condaは新しい依存関係のインストールに失敗することがわかりました。環境を非アクティブ化すると、最初にこれが解決されます。

source deactivate;
conda env update -f whatever.yml;
source activate my_environment_name; # Must be AFTER the conda env update line!
19
Dave

提案された答えは部分的に正しいです。 environment.ymlから削除されたパッケージもアンインストールするために-Pruneオプションを追加する必要があります。正しいコマンド:

conda env update -f local.yml --Prune
12
Blink