版本名称为 'custom' 的 conda 包

conda packages with version name of 'custom'

我在使用conda search anaconda的时候发现了几个custom版本的包,如下图:

Fetching package metadata: ....
anaconda                 1.6.0                np17py33_0  defaults
                          ...                    ...          ...
                         4.0.0               np110py35_0  defaults        
                         4.0.0               np110py34_0  defaults        
                         4.0.0               np110py27_0  defaults        
                         custom                   py35_0  defaults        
                         custom                   py34_0  defaults        
                         custom                   py27_0  defaults 

请注意,这三个 custom 版本 pkg 显示在 conda search anaconda 结果的末尾,因此它们被 conda 视为最新版本,这也会影响 conda install anaconda 结果(所以我必须使用 conda install anaconda=4.0.0)。

然后conda info anaconda=custom给出以下结果:

Fetching package metadata: ....                                                

anaconda custom py35_0                                                         
----------------------                                                         
file name   : anaconda-custom-py35_0.tar.bz2                                   
name        : anaconda                                                         
version     : custom                                                           
build number: 0                                                                
build string: py35_0                                                           
channel     : defaults                                                         
size        : 3 KB                                                             
date        : 2016-03-14                                                       
license     : BSD                                                              
md5         : 47c237b38bfc175cb73aed8b8b33ade7                                 
space       : python                                                           
installed environments:                                                        
dependencies:                                                                  
    python 3.5*                                                                

anaconda custom py34_0                                                         
----------------------                                                         
file name   : anaconda-custom-py34_0.tar.bz2                                   
name        : anaconda                                                         
version     : custom                                                           
build number: 0                                                                
build string: py34_0                                                           
channel     : defaults                                                         
size        : 3 KB                                                             
date        : 2016-03-14                                                       
license     : BSD                                                              
md5         : 767a59923372d998b8c83fb16ac035a1                                 
space       : python                                                           
installed environments:                                                        
dependencies:                                                                  
    python 3.4*                                                                

anaconda custom py27_0                                                         
----------------------                                                         
file name   : anaconda-custom-py27_0.tar.bz2                                   
name        : anaconda                                                         
version     : custom                                                           
build number: 0                                                                
build string: py27_0
channel     : defaults                                                      
size        : 3 KB                                                          
date        : 2016-03-14                                                    
license     : BSD                                                           
md5         : 8288aef529d5a46d07bd84b4fcf4308a                              
space       : python                                                        
installed environments:                                                     
dependencies:                                                               
    python 2.7*           

但我不知道 know/remeber 这三个包如何以及为什么出现在这台计算机上,谁能解释一下:

  1. 这些自定义 版本 pkg 最初是如何创建的?
  2. How/Why 这些 自定义 版本 pkg 显示在 conda search 结果中?
  3. 如何删除这些 自定义 版本 pkgs?

这确实是一个部分答案。我不确定为什么存在这个版本。

(1) 就 custom 的特定版本值而言,似乎这是从 here:

允许的

version: string

The package version, which may not contain -. Conda acknowledges PEP 440.

所以这个 anaconda 包的创建方式与任何其他版本相同。我假设使用 conda build.

(2) 它们显示在搜索结果中是因为它们存在于 anaconda cloud 中。看来这是官方发布的anaconda版本了。

至于它存在的原因,如果你下载一个实际的包文件(例如 linux-64-anaconda-custom-py35_0.tar.bz2),展开它,然后阅读 info/index.json 文件,看起来这个包会简单地安装python 和其他基本需求。将它与 anaconda 版本 4.0.0 或其他版本进行比较,您会看到大量的包。我假设这个包存在,这样如果有人安装自定义版本,他们将只获得基本的包,然后他们通过 conda install-ing 他们想要的任何其他包。

例如,当您执行 conda create -n anc-test anaconda=4.0.0conda create -n anc-test anaconda=custom 时查看包。

编辑:刚看到那也在您的 conda info 中,所以您可能已经意识到依赖项的差异。

(3) 我认为您不能从搜索调用中删除这些自定义包,因为它们是 anaconda 云中的合法包。您可以通过正则表达式将它们从 conda search 中排除。从您的输出来看它们似乎并没有安装——至少在当前环境中没有。

存在的任何包的一个 custom 版本(现在,在官方回购协议中)是针对 anaconda 包的。

这是有原因的...anaconda conda 包是 metapackages,这意味着它们是包的包——或者没有真正源代码的包,只有引入一堆依赖项。每个 anaconda 包都有每个子包固定到该子包的明确和特定版本。这是因为 Continuum 对该组软件包(以及那些特定版本)的互操作性进行了广泛的测试。

现在,在您通过 Anaconda 安装程序或安装 Miniconda 然后 conda install anaconda 安装了 anaconda 之后,您将拥有一组包含所有这些经过测试的保证的软件包。您没有理由必须坚持使用这组锁定的软件包——您可以安装任何您想要的任何版本。但是,您不再拥有可识别版本的 Anaconda Distribution。您已经 自定义了 它。因此,当您 运行 conda list 并且 anaconda 软件包的版本显示 custom 时,您就知道您已经偏离了 Anaconda 发行版中的一组软件包,这些软件包是稳健的测试了互操作性。

您的 conda search anaconda 查询只是反映了它是如何实现的。您会注意到在该查询中 custom 包列在最前面,这意味着它们在比较版本时具有最低的排序顺序。因此,如果您 运行 conda update anaconda 在您从特定固定的 anaconda 包中分离出来之后,您将返回到 Anaconda 发行版的编号版本。