web-dev-qa-db-ja.com

プラットフォーム間でconda環境を共有する方法

http://conda.pydata.org/docs/using/envs.html にあるcondaのドキュメントでは、他の人と環境を共有する方法を説明しています。

ただし、ドキュメントでは、これはクロスプラットフォームではないことが示されています。

NOTE: These explicit spec files are not usually cross platform, and      
therefore have a comment at the top such as # platform: osx-64 showing the  
platform where they were created. This platform is the one where this spec
file is known to work. On other platforms, the packages specified might not
be available or dependencies might be missing for some of the key packages
already in the spec.

NOTE: Conda does not check architecture or dependencies when installing 
from an explicit specification file. To ensure the packages work correctly,
be sure that the file was created from a working environment and that it is 
used on the same architecture, operating system and platform, such as linux-
64 or osx-64.

あるプラットフォーム(例:CentOS)のconda環境を別のプラットフォーム(例:Windows)で共有および再作成する良い方法はありますか?

46
user3731622

回答

この答えは、一般的に気にするパッケージの同じバージョンが異なるプラットフォーム上にあり、のまったく同じバージョンを気にしないことを確認したいという仮定で与えられます依存関係ツリー全体のallパッケージ。一部のcondaパッケージにはosx/win/linuxの異なる依存関係があるため、障害の可能性が高い依存関係ツリー全体ですべてのパッケージのまったく同じバージョンをインストールしようとしている場合。たとえば、 otroboptのレシピ はwinとosx/linuxで異なるパッケージをインストールするため、環境リストは異なります。

推奨:手動でenvironment.yamlファイルを作成し、関心のある依存関係のみを指定または固定します。残りはcondaソルバーに任せます。おそらく注目に値するのは、conda-env(conda環境を管理するために使用するツール)が、「常に手動でenvironment.ymlファイルを作成する」ことを推奨していることです。

その後、あなたはただconda env create --file environment.yml

conda-env のreadmeをご覧ください。

それらは非常に単純な場合があります。

name: basic_analysis
dependencies:
  - numpy
  - pandas

または、依存関係を固定し、インストールするanaconda.orgチャネルを指定するより複雑なもの:

name: stats-web
channels:
  - javascript
dependencies:
  - python=3.4   # or 2.7 if you are feeling nostalgic
  - bokeh=0.9.2
  - numpy=1.9.*
  - nodejs=0.10.*
  - flask
  - pip:
    - Flask-Testing

どちらの場合でも、conda env create --file environment.yamlを使用して環境を作成できます

より複雑なユースケースやその他の質問がある場合は、元の質問を更新してください。もう少しお手伝いできるかどうかを確認します。

63
Eric Dill

conda-env exportを使用して、完全な環境をmy_env.ymlという名前のファイルにエクスポートします。

Pipを含む完全な依存関係の代わりに、OS Xでプレフィックスのみを取得する作業ソリューションを確認してください。

手順1:有効になっている場合、環境から無効にします。それ以外の場合は、プレフィックスのみでymlファイルを作成します。

ステップ2:以下のコマンドを実行してconda-env export -n my_env> my_env.ymlをエクスポートし、必要なすべての依存関係、チャネル、およびpipインストールを、他のユーザーと共有するためにインポート可能なymlファイルにエクスポートします。

ステップ3:次のコマンドを実行してconda-env create -n my_env -f = my_env.ymlをインポートすると、他のマシンを共有する場合とまったく同じ環境が作成されます。

1

Linux、macOS、およびWindowsで使用できる単一の環境ファイルを維持するソリューションに関心がある場合は、conda-devenvhttps://github.com/ESSS/conda-devenv のツール。

1
Allan