conda install 和 conda update 有什么区别?

Jas*_*n S 3 python anaconda conda

conda install和 和有conda update什么区别?我浏览了文档,没有看到任何明显的区别。


文档说:

来自conda install

Conda 尝试安装所请求软件包的最新版本。为此,它可能会更新一些已安装的软件包,或安装其他软件包。要防止更新现有包,请使用 --no-update-deps 选项。这可能会强制 conda 安装请求包的旧版本,并且不会阻止安装其他依赖包。

来自conda update

Conda 尝试安装所请求软件包的最新版本。为此,它可能会更新一些已安装的软件包,或安装其他软件包。要防止更新现有包,请使用 --no-update-deps 选项。这可能会强制 conda 安装请求包的旧版本,并且不会阻止安装其他依赖包。

Bog*_*che 5

这正是您提供的文档所说的。对于 conda 安装:

将软件包列表安装到指定的 conda 环境中。

对于 conda 更新:

将 conda 包更新到最新的兼容版本。

  • 我不敢苟同。`update` 和 `install` 这两个词都是通用术语,我认为了解它们之间的区别是常识。 (2认同)

A R*_*bel 5

在问题中引用的文档文本的上下文中

... Conda 尝试安装所需软件包的最新版本...

似乎需要强调的是,文档并不完全清楚安装和更新之间的区别。事实上,文档对安装的内容有相同的解释,但没有澄清条件,这确实有点令人困惑(至少对我来说)。

安装和更新之间的隐式区别不仅在于,如果您尝试更新不存在的包(问题评论中提到的内容),您会收到错误,而且还有副作用(依赖项的处理)install和是不同的update

一个现实世界的例子:

(base)  535> conda install -d sphinx
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /data/anaconda3

  added / updated specs:
    - sphinx


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    sphinx-3.0.3               |             py_0         1.1 MB
    ------------------------------------------------------------
                                           Total:         1.1 MB

The following packages will be UPDATED:

  sphinx                                         2.4.0-py_0 --> 3.0.3-py_0

Run Code Online (Sandbox Code Playgroud)

而更新导致

(base)  536> conda update -d sphinx
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /data/anasynth_nonbp/anaconda3

  added / updated specs:
    - sphinx


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.4.1              |           py36_0         279 KB
...
    sphinx-3.0.3               |             py_0         1.1 MB
...
    zipp-3.1.0                 |             py_0          13 KB
    ------------------------------------------------------------
                                           Total:        39.8 MB

The following NEW packages will be INSTALLED:

  importlib-metadata pkgs/main/linux-64::importlib-metadata-1.6.0-py36_0
  prompt-toolkit     pkgs/main/noarch::prompt-toolkit-3.0.4-py_0
  toml               pkgs/main/linux-64::toml-0.10.0-py36h28b3542_0

The following packages will be REMOVED:

  asn1crypto-1.3.0-py36_0

The following packages will be UPDATED:

  astroid                                      2.3.3-py36_0 --> 2.4.1-py36_0
...
  sphinx                                         2.4.0-py_0 --> 3.0.3-py_0
...
  zipp                                           2.2.0-py_0 --> 3.1.0-py_0

Run Code Online (Sandbox Code Playgroud)

在没有调查最后细节的情况下,似乎可以总结如下(最后使用 进行测试conda 4.8.3):

康达安装

安装所请求软件包的最新版本,并对已安装的软件包进行最少的更改

康达更新

如果包存在,将更新到最新版本;如果不存在,将给出错误。此外,它还更新作为参数列出的包的所有依赖项。conda update即使参数中的包已经是最新版本,也会更新它们。

  • 也许还值得指出的是,“conda install”可以采用版本字符串(“conda install mypackage=1.1”),但“conda update”则不能。指定版本字符串会安装该特定版本,因此“conda install”也可用于_降级_包。 (2认同)