为什么使用conda-forge时anaconda安装会返回不同的结果?

时间:2019-12-18 18:58:54

标签: python anaconda conda

背景

当我在同一计算机上以相同的anaconda安装同时运行以下两个命令时,会得到不同的结果:

  1. conda install pymysql
  2. conda install -c conda-forge pymysql

如下面的屏幕截图所示(以下屏幕截图内容也已粘贴): enter image description here

主要是它们的大小不同。而存在具有相同版本号的不同软件包这一事实令我感到担忧。

考虑:

The following packages will be downloaded:

package                    |            build
---------------------------|-----------------
conda-4.8.0                |           py37_1         2.8 MB
pymysql-0.9.3              |           py37_0          83 KB
------------------------------------------------------------
                                       Total:         2.9 MB

说明伪造频道中收到的内容:

The following packages will be downloaded:

package                    |            build
---------------------------|-----------------
conda-4.8.0                |           py37_1         3.0 MB  conda-forge
pymysql-0.9.3              |             py_0          41 KB  conda-forge
------------------------------------------------------------
                                       Total:         3.1 MB

问题

这是什么原因造成的?

如何快速验证这些conda软件包?

2 个答案:

答案 0 :(得分:2)

DisplayMetrics displayMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); int height = displayMetrics.heightPixels; int width = displayMetrics.widthPixels; 频道是anaconda提供的软件包。 default通道是社区保留的软件包,包括二进制文件和用于多个OS的安装。

取决于来源,您可能会获得预编译的二进制安装或tar文件压缩的​​安装程序。我建议对所有内容都使用conda-forge。

https://conda-forge.org/docs/user/introduction.html

您可以在这里自己查看差异:

https://anaconda.org/search?q=pymysql

答案 1 :(得分:2)

As @eatmeimadanish points out,它们来自维护单独构建配方的不同渠道。请注意,构建配方与软件包版本无关,并且取决于编译选项,同一版本的软件包通常可以有多个构建。例如,可以使用不同的BLAS或CUDA库。可能还存在一些可选组件,而一个构建可能使另一构建没有启用。

Anaconda和Conda Forge的配方都已公开。例如,您可以比较Conda的两个版本中包含的内容:

conda-forge/conda-feedstockAnacondaRecipes/conda-feedstock

或PyMySQL构建:

conda-forge/pymysql-feedstockAnacondaRecipes/pymysql-feedstock

Conda Forge是开源的,因此许多软件包都由社区贡献者维护。虽然任意用户可以建议原料并提出拉取请求,但仍然存在一系列监管,以使每个程序包仅有限的维护者可以合并和批准PR。

默认情况下,Conda使用哈希检查来验证Anaconda Cloud上的软件包,但这只会检查您下载的软件包与上载者存放的哈希是否等效。对于defaults频道,我们可以假设上传者是Continuum,Inc.的员工;对于conda-forge,这是由原料维护人员触发的自动构建工具链。