繁体   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