使用requirements.txt文件自动从conda渠道和pip安装软件包到新的conda环境中。

15 浏览
0 Comments

使用requirements.txt文件自动从conda渠道和pip安装软件包到新的conda环境中。

我正在尝试使用一个同事与我共享的requirements.txt文件来设置一个conda环境。我的同事在没有Anaconda的Mac上使用Python,而我在带有Anaconda的Windows机器上使用。文件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: 当前渠道中没有以下软件包:
  - appscript==1.0.1
  - style==1.1.0
  - senticnet==1.3
  - scikits.optimization==0.3
...

我理解的是,这是因为这些软件包在Anaconda的软件包安装渠道中不可用,应该通过激活我的conda环境,使用pip install -r requirements.txt命令来安装它们。

问题是,这个软件包列表非常长,我希望避免手动检查并区分哪些软件包包含在Anaconda渠道中,哪些应该使用pip安装。那么,有没有办法告诉Anaconda自动识别包含在其渠道中的软件包,并安装它们,然后使用pip安装其余的软件包?

0
0 Comments

使用requirements.txt文件在conda环境中创建环境时没有任何问题。

实际上,您还可以在创建环境时设置其他频道:

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

例如,在您提到的第一个软件包的情况下,您可以从anaconda频道安装它。所以你可以运行:

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

为什么首先使用default频道?嗯,只是为了给默认频道一个优先权(频道的优先级由它们列在的顺序指定:从左到右的优先级更高)。

当至少有一些软件包在conda中不可用时,有几种替代方法:

1.通过conda安装那些任何频道中可用的软件包。

2.通过pip安装其余的软件包。

3.创建conda环境.yml文件:

conda env export > environment.yml

当您需要重新创建此环境时,可以执行以下操作:

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

它将使用conda安装软件包,安装pip,然后仅安装后者中可用的软件包。

这种方法具有好和坏的性质:

好的性质之一是它将通过conda安装的软件包与通过pip安装的软件包分开。

坏的性质之一是它只对conda有用,而对pip本身没有用处。

0