web-dev-qa-db-ja.com

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

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は次のいずれかの場所からインストールを試みます。利用できます。

63
cdeepakroy

私はファイルの行を反復するだけになりました

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

119
Till Hoffmann

this で述べたようにこれを行うことができます

.ymlファイルにエクスポート

conda env export > freeze.yml

再現するには:

conda env create -f freeze.yml
8
Pbms

探している人のために、私はこれをフィッシュシェルの@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
Yuri-M-Dias

ここでの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ファイルから)削除して再作成することです。詳細については、次のガイドを参照してください。

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

0
MarredCheese