使用"conda install --yes --file requirements.txt"安装仅可用的包,没有错误

cde*_*roy 65 python pip anaconda

使用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上搜索此软件包

conda install --yes --file requirements.txt
Run Code Online (Sandbox Code Playgroud)

是否可以更改此行为,而不是抛出错误,以便在requirements.txt中安装所有可用的包,并为那些不可用的包引发警告?

我想这样,因为错误所说的包nimfa不可用,可以安装pip.因此,如果我可以改变行为pip install -r requirments.txt以仅针对不可用的包发出警告,我可以使用conda install --yes --file requirements.txt.travis.yml中的命令进行跟踪,以便TravisCI尝试从可用的任何地方安装它.

Til*_*ann 129

我最后只是迭代文件的行

$ while read requirement; do conda install --yes $requirement; done < requirements.txt

编辑:如果你想使用pip安装一个软件包,如果它不能通过conda获得,那就试试吧:

$ while read requirement; do conda install --yes $requirement || pip install $requirement; done < requirements.txt

编辑:如果您使用Windows(信用转到@Clay):

$ FOR /F "delims=~" %f in (requirements.txt) DO conda install --yes "%f" || pip install "%f"

  • @TillHoffmann在Windows机器上的解决方案:`FOR/F'delims =〜"%f in(requirements.txt)DO conda install --yes"%f"|| pip install"%f"`工作得很好.谢谢! (8认同)
  • 多亏了这个,对使用它的任何人都有一些小提示,请确保你的requirements.txt以换行符结尾,以便读取最终的包 (4认同)
  • 如果您在需求文件中有评论,pip 会详细地抱怨(如果无害,就会很烦人)。bash one-liner 的一种变体,它忽略注释:`while read req; 做 if [[ $req != "#"* ]]; 然后 conda install --yes $requirement || pip install $requirement; fi; 完成 &lt;requirements.txt` (3认同)
  • 有没有办法在迭代时自动使用“conda install”无法使用的“pip install”软件包? (2认同)
  • @delusionX,我已经扩展了答案. (2认同)

pbm*_*bms 9

您可以按照此处的说明执行此操作

导出到.yml文件

conda env export > freeze.yml
Run Code Online (Sandbox Code Playgroud)

重现:

conda env create -f freeze.yml
Run Code Online (Sandbox Code Playgroud)