我创建了一个Anaconda Python Conda环境并导出了一个spec文件,因此如果需要,我可以使用命令conda list --explicit
重新安装完全相同的环境。那天是今天,但我很失望地看到其中一个文件不可用并被更新的版本所取代:
https://conda.anaconda.org/conda-forge/win-64/gdal-2.1.3-np111py35_vc14_0.tar.bz2 https://conda.anaconda.org/conda-forge/win-64/gdal-2.1.3-np111py35_vc14_7.tar.bz2
Conda遇到错误,因为链接已断开,然后多次重试失败:
CondaError: CondaHTTPError: HTTP 404 NOT FOUND for url <https://conda.anaconda.org/conda-forge/win-64/gdal-2.1.3-np111py35_vc14_0.tar.bz2
Elapsed: 00:01.270000
CF-RAY: 3fa8f7eb093298a1-LAX
An HTTP error occurred when trying to retrieve this URL.
HTTPerrors are often intermittent, and a simple retry will get you on your way.
四部分问题:
答案 0 :(得分:3)
在conda频道中,无法保证您使用的工具版本将永久保留。例如,如果在工具中发现错误,它将被更正,并且将使用较新的版本代替旧版本。
conda list --explicit
不是一种非常好的出口环境方式,因为你说它只会在很短的时间内发挥作用。而且,它不能移植到其他操作系统。我建议使用conda doc中所述的conda env export
或conda list --export
:https://conda.io/docs/commands/env/conda-env-export.html
这样,工具的版本将被保留,但不是完整的URL,每个包都可以下载,而且可能经常更改。
所以回答
Q1:
如果以正确的方式导出环境,则可以随着时间的推移使用它们。您永远无法确定10年前使用的工具版本是否仍然可用,但conda会在导入您的环境时告诉您。
Q2:
您可以创建自己的conda频道,并使用固定版本打包所需的任何工具。但问题是:“你真的需要这个吗?”这意味着您无法升级所使用的工具。有时最好更新您的代码并使用较新版本的工具,而不是保留旧的错误版本或忘记改进。
我从未测试过,但在另一篇文章中,我读到环境是自包含在一个文件夹$CONDA_HOME/envs/[your_env]
中,如果它是相同的架构(linux64,windows,OSX),这个文件夹可以直接复制到另一个conda安装中...)。
Q3:
除了conda env export
之外,没有这方面的工具。顺便说一句,我认为所有下载的软件包都在$CONDA_HOME/pkgs
。
Q4:
不,因为它不是导出环境的好方法。有关信息,conda不会为不同的环境多次下载相同的软件包。它重用已安装的软件包。您可以在家中添加名为.condarc
的文件,并将该文件放入allow_softlinks: false
。这将告诉conda重新安装新环境安装所需的任何软件包,而不是链接已安装在其他环境中的工具。
答案 1 :(得分:0)
执行以下命令,即可解决问题:
conda config --remove-key channels
conda config --append channels conda-forge --append channels bioconda --append
channels defaults
另请注意,我有意省略了您目前在频道列表中的 r 频道。您不需要也不应该使用该通道(因为它实际上会降低求解器的性能),因为 R 包已经作为 https://repo.anaconda.com/pkgs/r 成为默认多通道的一部分。