【问题标题】:Why does conda try to update packages with --no-update-dependencies?为什么 conda 尝试使用 --no-update-dependencies 更新软件包?
【发布时间】:2016-03-24 08:24:11
【问题描述】:

通常当我尝试安装新软件包时,conda 也想更新其他软件包,即使我添加了 --no-update-dependencies 开关。更新似乎是“不必要的”——就像大多数时候只有版本号的最后一部分发生了变化。

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

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

【问题讨论】:

    标签: python anaconda conda


    【解决方案1】:

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

    【讨论】:

    • --no-deps 与 --no-update-deps 不同,因为一个“不安装”依赖项,而另一个则颂扬它(虽然我们应该期望现有的依赖项是没碰过……)
    【解决方案2】:

    tldr;

    别担心,你的包没有被更新,只有它们的内部版本号,应该是无害的。

    一些解释

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

    如您所见,它正在安装vs2010_runtime,这是由于 conda 更新了使用功能构建其软件包的方式。由于您拥有 Python 3.4(使用 Visual Studio 2010 构建),因此它正在安装 VS 2010 运行时。如果您安装的是 Python 3.5,它将安装 VS 2015 运行时。

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

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

    【讨论】:

    • 它似乎更新的不仅仅是内部版本号。我将整个环境置于版本控制之下,这使得查找更改变得容易。以下是在上述示例中进行的一些相当重要的更改:imgur.com/a/TGZuB 总共更改了数百个文件。
    • 这就是为什么我告诉你它“应该是无害的”,但是,我已经成长为包维护者实际上并不尊重这一点的观点。
    • 几周后我每次添加一个新包时都会得到这个结果......我几乎可以肯定会有一个“次要”的 Python 版本升级,它迫使我安装。所以我想没有办法阻止这种情况..
    • 这里有同样的问题。一个额外的标志--no-update-builds 将是一个理想的解决方案......
    猜你喜欢
    • 2023-01-27
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 2016-01-28
    • 1970-01-01
    • 2018-02-25
    相关资源
    最近更新 更多