Condaを使用して次のコマンドを使用して、requirements.txtにパッケージをインストールするとき
conda install --yes --file requirements.txt
Requirements.txtのパッケージが利用できない場合、以下に示すような「パッケージエラーなし」をスローします:
Anaconda Cloud APIサイトの使用 https://api.anaconda.org
パッケージメタデータの取得:....
エラー:現在のlinux-64チャネルに一致するパッケージが見つかりません:nimfa == 1.2.3
次のコマンドでanaconda.orgでこのパッケージを検索できます
anaconda search -t conda nimfa ==1.2.3
エラーをスローする代わりに、requirements.txtで利用可能なすべてのパッケージをインストールし、利用できないパッケージに対して警告をスローするように、この動作を変更することは可能ですか?
エラーが言うパッケージnimfaが利用できないため、pipをインストールできるため、これが欲しいです。 conda install --yes --file requirements.txt
の動作を変更して、使用できないパッケージに対して警告をスローできる場合は、.travis.ymlのpip install -r requirments.txt
コマンドでフォローアップできるため、TravisCIは次のいずれかの場所からインストールを試みます。利用できます。
私はファイルの行を反復するだけになりました
$ while read requirement; do conda install --yes $requirement; done < requirements.txt
Edit:condaを介して利用できない場合にpipを使用してパッケージをインストールしたい場合は、これを試してください:
$ while read requirement; do conda install --yes $requirement || pip install $requirement; done < requirements.txt
Edit:Windowsを使用している場合(クレジットは @ Clay )に移動します:
$ FOR /F "delims=~" %f in (requirements.txt) DO conda install --yes "%f" || pip install "%f"
this で述べたようにこれを行うことができます
.ymlファイルにエクスポート
conda env export > freeze.yml
再現するには:
conda env create -f freeze.yml
探している人のために、私はこれをフィッシュシェルの@TillHoffmannのソリューションとして使用しました。
$ while read requirement; conda install --yes $requirement; end < requirements.txt
そして
$ while read requirement; conda install --yes $requirement;or pip install $requirement; end < requirements.txt
ここでのPbmsの答えは、コピーする既存の環境があると仮定した場合の正しい方法です。 environment.yml
にリストされているように、CondaはCondaパッケージとpipパッケージの両方を完全にインストールできます。プロセス全体をより詳細に文書化したかった。私はフォルダーベースの環境を使用していることに注意してください。そのため、ほとんどのコマンドに--prefix [path to environment folder]
を追加しました。
次のように、現在のフォルダーのenv
というフォルダーに既存のプロジェクトの環境をインストールしたとします。
conda create --prefix ./env
次のように、そのプロジェクトの環境用にenvironment.yml
を生成します。
conda env export --prefix ./env > environment.yml
environment.yml
をそこにコピーし、そこからこれを実行することにより、他のフォルダー内に新しい環境を作成します。
conda env create --prefix ./env --file environment.yml
environment.yml
をもう一度コピーし、そこからこれを実行することにより、environment.yml
に一致する既存の環境が得られます。
conda env update --prefix ./env --file environment.yml --Prune
問題の環境がアクティブな状態で、次のようにパッケージの状態を確認します。
conda list
これは、そのコマンドが出力する内容の要約版です(pipパッケージにはpypi
とマークされていることに注意してください):
# Name Version Build Channel
pip 19.2.2 py37_0
python 3.7.4 h5263a28_0
numpy 1.16.4 py37h19fb1c0_0
pandas 0.25.1 py37ha925a31_0
pyodbc 4.0.27 py37ha925a31_0
ibm-db 3.0.1 pypi_0 pypi
ibm-db-sa 0.3.5 pypi_0 pypi
最後に、これはenvironment.yml
がどのように見えるかを簡略化したバージョンです(pipパッケージは独自のカテゴリにリストされていることに注意してください):
dependencies:
- pip=19.2.2=py37_0
- python=3.7.4=h5263a28_0
- numpy=1.16.4=py37h19fb1c0_0
- pandas=0.25.1=py37ha925a31_0
- pyodbc=4.0.27=py37ha925a31_0
- pip:
- ibm-db==3.0.1
- ibm-db-sa==0.3.5
Condaとpipを一緒に使用すると、お互いの依存関係を無意識のうちに吹き飛ばす可能性があるため、胸焼けを引き起こす可能性があることに注意してください。最初にすべてのCondaパッケージをインストールし、その後、2つを交互にではなく、すべてのpipパッケージをインストールすることになっています。環境が壊れている場合、公式の推奨事項は(environment.yml
ファイルから)削除して再作成することです。詳細については、次のガイドを参照してください。