「condainstall--yes--filerequirements.txt」を使用して利用可能なパッケージのみをエラーなしでインストールします


95

次のコマンドでCondaを使用してrequirements.txtにパッケージをインストールしている間

conda install --yes --file requirements.txt

要件.txtのパッケージが利用できない場合は、次のような「パッケージエラーなし」がスローされます。

Anaconda CloudAPIサイトの使用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が使用可能ないずれかの場所からインストールを試みるようにすることができます。

回答:


169

ファイルの行を繰り返すだけで終わりました

$ 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"


5
これを使用している人への小さなヒントです
。requirements.txt

1
反復中に、をpip install使用して利用できないパッケージも自動的にパッケージ化する方法はありconda installますか?
PeterB 2017

2
@delusionX、私は答えを拡張しました。
ホフマンまで2017

11
Windowsマシンでの@TillHoffmannのソリューション:FOR /F "delims=~" %f in (requirements.txt) DO conda install --yes "%f" || pip install "%f" 非常にうまく機能します。ありがとう!
クレイ

3
要件ファイルにコメントがある場合、pipは冗長に文句を言います(無害だと迷惑です)。コメントを無視するbashワンライナーのバリエーション:while read req; do if [[ $req != "#"* ]]; then conda install --yes $requirement || pip install $requirement; fi; done < requirements.txt
drevicko 2018


1

探している人のために、私はこれを@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

1

ここでのPbmsの答えは、コピー元の既存の環境があることを前提として、それを行う正しい方法です。Condaは、にリストされているように、Condaパッケージとpipパッケージの両方を完全にインストールできますenvironment.yml。プロセス全体をより詳細に文書化したかったのです。フォルダベースの環境を使用していることに注意してください。その--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を一緒に使用すると、お互いの依存関係が無意識のうちに吹き飛ばされる可能性があるため、胸焼けを引き起こす可能性があることに注意してください。2つを交互に使用するのではなく、最初にすべてのCondaパッケージをインストールし、次にすべてのpipパッケージをインストールすることになっています。環境が壊れた場合、公式の推奨事項は、環境を(environment.ymlファイルから)削除して再作成することです。詳細については、次のガイドを参照してください。

https://www.anaconda.com/using-pip-in-a-conda-environment/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.