为什么conda尝试使用--no-update-dependencies更新软件包?

24
经常在我尝试安装新软件包时,即使我添加了 --no-update-dependencies 开关,conda 也希望更新其他软件包。这些更新似乎是“不必要的”,因为大部分时间只有版本号的最后一部分发生了变化。今天我想安装 mpld3 包,但即使我添加了 --no-update-dependencies 开关,conda 仍然想将我的 python 软件包从版本 3.4.4-2 更新到 3.4.4-4。我该如何让 conda 安装 mpld3 软件包而不影响其他软件包?
C:\...>conda install -p pyenv --no-update-dependencies mpld3
Fetching package metadata: ....
Solving package specifications: ...........

Package plan for installation in environment C:\...\pyenv:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    vs2010_runtime-10.00.40219.1|                0         1.1 MB
    python-3.4.4               |                4        31.7 MB
    mpld3-0.2                  |           py34_0         123 KB
    ------------------------------------------------------------
                                           Total:        33.0 MB

The following NEW packages will be INSTALLED:

    mpld3:          0.2-py34_0
    vs2010_runtime: 10.00.40219.1-0

The following packages will be UPDATED:

    python:         3.4.4-2 --> 3.4.4-4

Proceed ([y]/n)?
2个回答

10

只是想提一下,这些选项在新的conda版本中已废弃。例如,在conda版本4.6.7中,您应该使用"conda install --no-deps yourpackage"。


9
"--no-deps"和"--no-update-deps"是不同的,前者完全不安装依赖项,而后者会安装依赖项(尽管我们应该期望现有的依赖项不受影响......) - Daniel Möller

9

tldr;

不用担心,你的软件包没有被更新,只有它们的构建编号被更新了,这应该是无害的。

一些解释

被更新的是软件包的 构建编号,而不是每个已安装软件包的版本。

正如您所看到的,它正在安装 vs2010_runtime,这是因为 conda 更新了其软件包的构建方式。由于您使用的是使用 Visual Studio 2010 构建的 Python 3.4,因此它正在安装 VS 2010 运行库。如果您正在安装 Python 3.5,则会安装 VS 2015 运行库。

构建编号 / 字符串不应该破坏任何人,因为它们应该是该软件包构建过程中的修复(例如:您添加了一个编译标志,但您并不打算这样做)。

--no-update-dependencies 出现时,conda 是否应该更新软件包(相同版本,不同构建编号)存在争议,因为您可能会得到一个错误的安装。


2
它似乎更新的不仅仅是构建号。我将整个环境放在版本控制下,这使得查找更改变得容易。以下是上面示例中进行的一些相当非平凡的更改:http://imgur.com/a/TGZuB 总共有数百个文件被更改。 - stmax
1
这就是为什么我告诉你这应该是“无害”的,然而,我的看法是软件包维护者实际上并不尊重这一点。 - Gustavo Muenz
每次过几周后我添加新的包时,几乎总是会出现这种情况... 我可以几乎确定会有一个“小”的 Python 版本升级需要我安装。所以我想没有办法可以防止这种情况发生。 - stmax
1
同样的问题在这里。一个额外的标志 --no-update-builds 将是一个理想的解决方案... - jberrio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接