从文件创建提供CondaHTTPError:HTTP 404 NOT FOUND

时间:2018-03-12 21:37:19

标签: python anaconda conda

我创建了一个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.

四部分问题:

  1. 规格文件是否仅用于短期使用?
  2. 我应该独立存档每个.bz2文件,以便以后能够重新创建环境吗?
  3. 是否有工具可以帮助我这样做,或者我应该查看文件夹并手动查找我需要的内容并将其复制并使用conda安装每个文件夹?
  4. 有没有更好的方法来检查spec文件的所有链接的有效性,而不是尝试安装它并观察它崩溃?它看起来像conda将检查它是否已经在另一个环境中下载了相同的文件,并且不会尝试另一次下载,并且可以隐藏损坏的链接。

2 个答案:

答案 0 :(得分:3)

在conda频道中,无法保证您使用的工具版本将永久保留。例如,如果在工具中发现错误,它将被更正,并且将使用较新的版本代替旧版本。

conda list --explicit不是一种非常好的出口环境方式,因为你说它只会在很短的时间内发挥作用。而且,它不能移植到其他操作系统。我建议使用conda doc中所述的conda env exportconda list --exporthttps://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 成为默认多通道的一部分。