[英]Creating requirements.txt in pip compatible format in a conda virtual environment
[英]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 安裝其任何渠道中可用的那些軟件包。
通過 pip 安裝 rest。
創建一個 conda environment.yml
文件:
conda env export > environment.yml
當您需要重新創建此環境時,您可以執行以下操作:
conda env create --name my-env-name --file environment.yml
它將使用 conda 安裝軟件包,將安裝 pip,然后將安裝僅適用於后者的軟件包。
這種方法有好有壞:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.