Anacondaエクスポート環境ファイル


129

他のコンピューターで使用できるanaconda環境ファイルを作成するにはどうすればよいですか?

を使用して、anaconda python環境をYMLにエクスポートしましたconda env export > environment.yml。エクスポートさenvironment.ymlれたprefix: /home/superdev/miniconda3/envs/juicyenvものには、他のPCとは異なる私のアナコンダの場所にマップするこの行が含まれています。


7
私はいくつかのテストを行っていましたが、プレフィックスが無視されていることがわかりました... envエクスポートに含まれている理由がわかりません。あなたは行うことができる必要があります conda env create -f environment.yml は、Windows上にある場合condaのENVは、 `vs2015_runtime`など、多くの依存関係を一覧表示されますので、脇としてだけでは、私の経験では、これは、プラットフォーム間で仕事に行くのではありません。しかしもちろん、これはLinuxでは利用できません。
Alex G Rice

4
Condaは実際にenvironment.ymlファイルを手動で作成することを推奨しているので、省略してもかまいません-stackoverflow.com/questions/39280638/…を
Brian Burns

回答:


177

condaなしで環境ファイルをエクスポートできる仕様には何も見つかりませんprefix: ...。しかし、アレックスがコメントで指摘したように、ファイルから環境を作成するとき、condaはプレフィックス行を気にしないようです。

これを念頭に置いて、他のユーザーにデフォルトのインストールパスを知らせないようにする場合は、grepに書き込む前に接頭辞行を削除できますenvironment.yml

conda env export | grep -v "^prefix: " > environment.yml

どちらの方法でも、他のユーザーが実行します。

conda env create -f environment.yml

環境はデフォルトのconda環境パスにインストールされます。

システムのデフォルトとは異なるインストールパスを指定する場合(environment.ymlの「prefix」とは関係ありません)、-p必要なパスに続けてフラグを使用します。

conda env create -f environment.yml -p /home/user/anaconda3/envs/env_name

Conda environment.ymlは手動で作成することをお勧めします。これは、プラットフォーム(Windows / Linux / Mac)間で環境を共有する場合に特に重要です。この場合、prefix行を省略できます。


1
...エグセレント!👍
アヒツナ

44

別のコンピューターにインストールされる環境からパッケージを保存する最も簡単な方法は、次のとおりです。

$ conda list -e > req.txt

次に、環境をインストールすることができます

$ conda create -n new environment --file req.txt

を使用する場合pipは、次のコマンドを使用してください:reference https://pip.pypa.io/en/stable/reference/pip_freeze/

$ env1/bin/pip freeze > requirements.txt
$ env2/bin/pip install -r requirements.txt

いいですが、pipでインストールされたパッケージでは動作しないようです。
リトルボビーテーブル

1
与えられた参照に基づいて更新したばかりですありがとうございます
javac

Anaconda Navigatorとpip(環境内から)の両方を使用してインストールしました。何を使うことをお勧めしますか?両方のコマンド?
DA

Anaconda環境ではcondaコマンドを使用する方が良いと思います。必要に応じて、pipを使用することもできます
javac

9
  • Linux

    conda env export --no-builds | grep -v "prefix"> environment.yml

  • ウィンドウズ

    conda env export --no-builds | findstr -v "prefix"> environment.yml


理論的根拠:デフォルトでconda env exportは、ビルド情報が含まれます。

$ conda env export
...
dependencies:
  - backcall=0.1.0=py37_0
  - blas=1.0=mkl
  - boto=2.49.0=py_0
...

代わりに、ビルド情報なしで環境をエクスポートできます。

$ conda env export --no-builds
...
dependencies:
  - backcall=0.1.0
  - blas=1.0
  - boto=2.49.0
...

これは、PythonバージョンとOSから環境を切り離します。


1
これは良い答えであることに同意しますが、ビルド情報を除外することがプラットフォーム間で環境を転送するのに役立つ理由の詳細を追加することを検討してください。
merv

最終的にこれを使用しましたが、素晴らしいアイデア@mervです。それだけでした。
フランソワルブラン

残念ながら、エクスポートをインストールして別のOSに再インストールする場合、これは常に機能するとは限りません。
セーレン

2

文字列形式でのみパッケージをエクスポートする方が、conda環境全体をエクスポートするよりも移植性が高いと思います。以前の答えがすでに示唆したように:

$ conda list -e > requirements.txt

しかし、これはrequirements.txt間例えば、オペレーティングシステム間で移植することはできませんビルド番号が含まれているMacUbuntu。にconda env exportはオプション--no-buildsがありますが、にはありませんconda list -e。そのため、次のコマンドを発行してビルド番号を削除できます。

$ sed -i -E "s/^(.*\=.*)(\=.*)/\1/" requirements.txt 

そして、別のコンピューターで環境を再作成します。

conda create -n recreated_env --file requirements.txt 

sedコマンドはかなりうまくいきました。パッチバージョンを削除する必要がありました。だから、major.minor.patchmajor.minor、それが働きました。結局、より低いパッチ番号はメインのリポジトリによって削除されました。
ルーカス

1
  1. 最初にconda環境をアクティブ化します(エクスポート/バックアップしたいもの)
conda activate myEnv
  1. すべてのパッケージをファイル(myEnvBkp.txt)にエクスポートします
conda list --explicit > myEnvBkp.txt
  1. 環境の復元/インポート:
conda create --name myEnvRestored --file myEnvBkp.txt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.