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

Why does conda try to update packages with --no-update-dependencies?

通常当我尝试安装一个新包时,conda 也想更新其他包,即使我已经添加了 --no-update-dependencies 开关。更新似乎是 "unnecessary" - 大多数时候只有版本号的最后一部分发生了变化。

今天我想安装 mpld3 包并且 conda 想将我的 python 包从版本 3.4.4-2 更新到 3.4.4-4,即使我已经添加了 --no-update -依赖开关。

如何让 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)?

tldr;

别担心,您的软件包不会被更新,只会更新它们的内部版本号,应该是无害的。

一些解释

正在更新的是 build number,而不是每个安装包的版本。

如您所见,它正在安装 vs2010_runtime,这是由于 conda 更新了其包是如何使用功能构建的。由于您有 Python 3.4(使用 Visual Studio 2010 构建),它正在安装 VS 2010 运行时。如果您正在安装 Python 3.5.

,它将安装 VS 2015 运行时

Build numbers/strings 不应该破坏任何人,因为它们应该是对该包的构建过程的修复(例如:您向编译添加了一个您不打算添加的标志)。

存在 --no-update-dependencies 时 conda 是否应该更新软件包(相同版本,不同内部版本号)是有争议的,因为您最终可能会安装错误。

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