我试过conda search --outdated,有很多过时的软件包,例如scipy是0.17.1但是最新的是0.18.0.但是,当我这样做的时候conda update --all.它不会更新任何包.
更新1
conda update --all --alt-hint
Fetching package metadata .......
Solving package specifications: ..........
# All requested packages already installed.
# packages in environment at /home/user/opt/anaconda2:
#
Run Code Online (Sandbox Code Playgroud)
更新2
我可以单独更新这些包.我能做到conda update scipy.但为什么我不能一次更新所有这些?
May*_*u36 184
TL; DR:依赖冲突
你是对的:
conda update --all
Run Code Online (Sandbox Code Playgroud)
实际上是要走的路.Conda总是尝试将软件包升级到该系列中的最新版本(比如Python 2.x或3.x).但是可能存在依赖性冲突(阻止进一步升级).如果它们发生,Conda通常会非常明确地发出警告.
例如X要求Y <5.0,所以Y永远不会> = 5.0
这就是为什么你'不能'将它们全部升级的原因.
考虑到您的更新:您可以单独升级它们,但这样做不仅包括升级,还包括另一个包的降级.说,添加到上面的示例:
X> 2.0要求Y <5.0,X <2.0要求Y> 5.0
因此升级Y> 5.0意味着将X降级为<2.0,反之亦然.
(当然,这是一个教学示例,但实际上它是相同的,通常只有更复杂的依赖关系和子依赖关系)
因此,您仍然无法通过单独升级来升级它们 ; 依赖关系是不可满足的,所以更早或更晚,升级将再次降级已升级的包.或者破坏软件包的兼容性(通常你不需要!),这只能通过显式调用ignore-dependencies和force -command来实现.但是,这仅仅是破解围绕问题的方式,绝对不是正常用户的情况下!
InL*_*Law 12
更准确地回答这个问题:
conda(对于miniconda和Conacida来说是conda)只更新了一个包的特定版本 - > major和minor.这就是范例.
在文档中,您将找到"注意:Conda更新到其系列中的最高版本,因此Python 2.7更新到2.x系列中可用的最高版本,以及3.x系列中最高版本的3.6更新." DOC
如果Wang没有提供可重复的例子,那么只能提供帮助.例如,它真的是他想要更新的虚拟环境,还是Wang可以获得他/她想要的东西
conda update -n ENVIRONMENT --all
Run Code Online (Sandbox Code Playgroud)
如果您只想更新几乎所有内容,则可以创建一个pin文件
echo "conda ==4.0.0" >> ~/miniconda3/envs/py35/conda-meta/pinned
echo "numpy 1.7.*" >> ~/miniconda3/envs/py35/conda-meta/pinned
Run Code Online (Sandbox Code Playgroud)
在运行更新之前.
如果稍后您要忽略env中的文件以进行更新,则可以执行以下操作:
conda update --all --no-pin
Run Code Online (Sandbox Code Playgroud)