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
也可用于降级包。