Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python conda安装和conda更新之间有什么区别?_Python_Anaconda_Conda - Fatal编程技术网

Python conda安装和conda更新之间有什么区别?

Python conda安装和conda更新之间有什么区别?,python,anaconda,conda,Python,Anaconda,Conda,和之间有什么区别?我浏览了文档,没有发现任何明显的区别 文件说: 从conda安装: Conda尝试安装所请求的应用程序的最新版本 包装。为了实现这一点,它可能会更新一些 已安装,或安装其他软件包。要防止现有包更新,请使用--no update deps 选项这可能会迫使conda安装旧版本的 请求的软件包,并且不会阻止安装其他依赖项软件包 从conda update: Conda尝试安装所请求的应用程序的最新版本 包装。为了实现这一点,它可能会更新一些 已安装,或安装其他软件包。要防止现有包

和之间有什么区别?我浏览了文档,没有发现任何明显的区别


文件说:

conda安装

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

conda update

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


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

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

对于conda更新:

将conda软件包更新至最新兼容版本


根据问题中引用的文件中的文本

。。。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

当更新导致

(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

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

conda安装

安装请求包的最新版本,对已安装包的更改最少

康达更新


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

install
安装新包,
update
将以前安装的包更新为最新版本,否?两者都提到将更新为最新版本。但前提条件不同<代码>更新
要求软件包已安装。如果不是,则更新将失败。首先执行
install
(一次),然后执行
update
(根据需要执行多次)。啊。。。。。好吧,这就是区别。有趣的是,
update
的文档中没有提到这一点。(我试过了,你是对的,如果我试图更新一个未安装的软件包,我会得到一个
packagenotinstalledererror
)我猜它们依赖于
install
update
的字典含义,但没有明确说明行为。这并没有理解差异的细微差别。(见戴兹的评论)我不同意。这两个词“代码>更新< /COD>和<代码>安装<代码>是一般术语,我认为常识知道它们之间的区别。你不能依赖软件来遵循常识意义。同意,但是你可以与文档相关。至少在CONDA 4.9中,<代码> CONDA UPDATE <代码>将只更新不是叶子的DEP。(未明确安装)。
conda update--update deps
也会更新叶子。也许还值得指出的是,
conda install
可以使用版本字符串(
conda install mypackage=1.1
)但是
conda update
不能。指定版本字符串将安装该特定版本,因此
conda install
也可用于降级包。