当我使用conda search anaconda
时,我发现了一些 自定义 版本的软件包,如下所示:
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
请注意,这三个自定义版本的pkgs显示在conda search anaconda
结果的末尾,因此它们被conda
视为最新版本,这也会影响{{1}结果(所以我必须使用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*
结果中显示?答案 0 :(得分:12)
现有的任何软件包的custom
版本(目前,在官方回购中)都适用于anaconda
软件包。
这里有原因...... anaconda
conda包是元数据包,这意味着它们是包的包 - 或者包没有真正的源代码而只带来一堆依赖。每个anaconda
包都将每个子包固定到该子包的显式和特定版本。这是因为Continuum对这组软件包(以及那些特定版本)的互操作性进行了广泛的测试。
现在,在您通过Anaconda安装程序安装anaconda或安装Miniconda然后安装conda install anaconda
之后,您就拥有了一组包含所有这些测试保证的软件包。没有理由你必须坚持这个锁定的包 - 你可以安装任何你想要的任何版本。您不再拥有版本可识别的Anaconda Distribution。您已自定义它。因此,当您运行conda list
并且anaconda
软件包的版本显示custom
时,您就知道您已经从Anaconda Distribution中的一组软件包中脱离出来,这些软件包经过了强大的互操作性测试。
您的conda search anaconda
查询只反映了如何实现此问题的工件。您将在该查询中注意到custom
包首先列出,这意味着它们在比较版本时具有最低的排序顺序。因此,如果您在从特定固定的anaconda软件包中脱离后运行conda update anaconda
,您将返回到Anaconda Distribution的编号版本。
答案 1 :(得分:0)
这实际上是一个部分答案。我不确定为什么这个版本确实存在。
(1)就custom
的特定版本值而言,here似乎允许这样做:
version:string
包版本,可能不包含 - 。 Conda承认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
- 他们想要的任何其他软件包。
例如,在执行conda create -n anc-test anaconda=4.0.0
与conda create -n anc-test anaconda=custom
时查看包。
编辑:刚看到那也在你的conda info
中,所以你可能已经意识到了依赖关系的不同。
(3)我认为您不能从搜索调用中删除这些自定义程序包,因为它们是anaconda云中的合法程序包。您可以通过正则表达式从conda search
中排除它们。它从输出中看起来并不像它们已安装 - 至少在当前环境中不是这样。