簡體   English   中英

使用 requirements.txt 在新的 conda 環境中自動安裝來自 conda 通道和 pip 的包

[英]using requirements.txt to automatically install packages from conda channels and pip in a new conda environment

我正在嘗試使用同事與我共享的requirements.txt文件設置 conda 環境。 我的同事在沒有 Anaconda 的 Mac 中使用 Python,而我在 Windows 機器中使用它和 Z8573F460A2DCE8BCCBD5460A2DCE8BCCBD57CCBD5 文件requirements.txt是使用命令pip freeze生成的,如下所示:

absl-py==0.7.1
affine==2.3.0
agate==1.6.0
agate-dbf==0.2.0
agate-excel==0.2.1
agate-sql==0.5.2
...

在檢查了這個問題的答案后,我在 Anaconda 終端中嘗試了以下操作:

conda create --name my-env-name --file requirements.txt

失敗並顯示以下錯誤消息:

PackagesNotFoundError: The following packages are not available from current channels:

  - appscript==1.0.1
  - style==1.1.0
  - senticnet==1.3
  - scikits.optimization==0.3
...

My understanding is that this happens because those packages are not available in the Anaconda package installation channels, and that they should be installed instead via pip with my conda environment activated, using pip install -r requirements.txt

問題是這個包列表很長,我想避免手動檢查和分離 Anaconda 頻道中包含哪些包,哪些包應該通過pip安裝。 那么,有沒有辦法告訴 Anaconda 通過自動識別其頻道中包含的包,安裝它們,然后使用pip安裝 rest 來創建環境?

requirements.txt與 conda 一起使用

創建 conda 環境時使用requirements.txt文件完全沒有問題。

其實你也可以在創建的時候設置額外的通道:

conda create --name my-env-name --file requirements.txt --channel <NAME_OF_CHANNEL>

例如,在您提到的第一個 package 的情況下,您可以從anaconda通道安裝它。 所以你可以運行:

conda create --name my-env-name --file requirements.txt --channel default --channel anaconda

為什么要先使用default頻道? 好吧,只是為了優先考慮默認的(通道的優先級由它們列出的順序指定:從左到右優先級較高)。

當使用 conda 至少有一些包不可用時

好吧,當沒有 conda 頻道可以提供您所需的任何軟件包時,有幾種選擇:

  1. 通過 conda 安裝其任何渠道中可用的那些軟件包。

  2. 通過 pip 安裝 rest。

  3. 創建一個 conda environment.yml文件:

     conda env export > environment.yml

當您需要重新創建此環境時,您可以執行以下操作:

conda env create --name my-env-name --file environment.yml

它將使用 conda 安裝軟件包,將安裝 pip,然后將安裝僅適用於后者的軟件包。

這種方法有好有壞:

  • 好的特性之一是它將通過 conda 安裝的軟件包與使用 pip 安裝的軟件包分開。
  • 不好的屬性之一是它僅對 conda 有用,但不適用於 pip 單獨。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM