1. ホーム
  2. python

[解決済み] conda install --yes --file requirements.txt "で利用可能なパッケージのみをエラーなしでインストールする。

2022-10-07 11:59:49

質問

Condaを使ってrequirements.txtにあるパッケージを以下のコマンドでインストール中です。

conda install --yes --file requirements.txt

requirements.txtにあるパッケージが利用できない場合、以下のような"No package error"を投げる。

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 の挙動を変更して、利用できないパッケージに対する警告を投げるだけにしておけば、その後にコマンド pip install -r requirments.txt を .travis.yml に追加することで、TravisCI は利用可能ないずれかの場所からそれをインストールしようとします。

解決方法は?

結局、ファイルの行を繰り返すだけでした。

$ while read requirement; do conda install --yes $requirement; done < requirements.txt

編集 : condaで利用できないパッケージをpipでインストールしたい場合、これを試してみてください。

$ while read requirement; do conda install --yes $requirement || pip install $requirement; done < requirements.txt

編集 : Windows を使用している場合(謝辞は @Clay ):

$ FOR /F "delims=~" %f in (requirements.txt) DO conda install --yes "%f" || pip install "%f"