我尝试了conda搜索——过时了,有很多过时的包,例如scipy是0.17.1,但最新的是0.18.0。然而,当我做conda更新时,所有。它不会更新任何包。

更新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:
#

更新2

我可以分别更新这些包。我可以做conda更新scipy。但是为什么我不能一次更新所有这些呢?


当前回答

为了更新所有可能的包,我使用conda update——update-all

它的工作原理!

其他回答

想象一下包的依赖关系图,当包的数量增加时,在升级/添加包时遇到冲突的几率要高得多。要避免这种情况,只需在Anaconda中创建一个新环境。

要节俭,只安装你需要的。对我来说,我在新环境中安装了以下包:

pandas scikit-learn matplotlib 笔记本 努力

我总共有84个包裹。

我同意Mayou36的观点。

例如,我犯了一个错误,在基本环境中安装新包时,对一些包使用conda,对另一些包使用pip。

为什么这不好?

1.这些都不会帮助更新从PyPI通过pip安装的> >的包,或任何使用python安装的包 setup . py安装。康达列表会给你一些提示 基于pip的Python包,但它不会这样做 有什么特别的东西可以更新它们。

我的所有项目都在同一个环境中!我用了update all-这很糟糕,没有更新all-。

所以,最好的办法就是为每个项目创建一个新的环境。为什么?

2. A Conda environment is a directory that contains a specific collection of Conda packages that you have installed. For example, you may be working on a research project that requires NumPy 1.18 and its dependencies, while another environment associated with an finished project has NumPy 1.12 (perhaps because version 1.12 was the most current version of NumPy at the time the project finished). If you change one environment, your other environments are not affected. You can easily activate or deactivate environments, which is how you switch between them.

所以,总结一下:

为每个项目创建一个新环境 注意conda和pip的区别

3.只包含您实际需要的包,并仅在必要时正确地更新它们。

如果在MS windows中工作,您可以使用蟒蛇导航器。单击环境,在下拉框中,默认为“已安装”。你可以选择“updatable”并从那里开始

依赖冲突:更新一个依赖需要(根据需求)降级另一个依赖

你说得对:

conda update --all

才是正确的方法。Conda总是尝试将包升级到系列中的最新版本(比如Python 2。X或3.x)。

依赖冲突

但是有可能存在依赖冲突(这会阻止进一步升级)。如果发生这种情况,康达通常会非常明确地发出警告。

例:X要求Y <5.0,所以Y永远不会是>= 5.0

这就是为什么你“不能”全部升级它们。

解决

补充一句:也许它可以工作,但在conda中无法使用X与Y一起工作的新版本> 5.0。可以使用pip进行安装,因为pip中有更多可用的包。但是请注意,如果存在依赖冲突,pip也会安装包,并且它通常会破坏conda环境,因为您不能再可靠地使用conda安装了。如果要这样做,请将其作为最后的手段,并且在使用conda安装了所有包之后。这是相当拙劣的。

您可以尝试的一种安全方法是在升级时添加conda-forge作为通道(添加-c conda-forge作为标志),或者如果您确实需要这个新版本,您可以尝试添加任何其他包含您的包的通道。这样,conda也会在这个位置搜索可用的包。

考虑您的更新:您可以分别升级它们,但这样做不仅包括升级,还包括降级另一个包。例如,在上面的例子中添加:

X > 2.0要求Y < 5.0, X < 2.0要求Y > 5.0

因此,升级Y > 5.0意味着将X降级到< 2.0,反之亦然。

(当然,这是一个教学示例,但在现实中是一样的,通常只是有更复杂的依赖项和子依赖项)

所以你仍然不能通过单独升级来升级它们;依赖关系是不能满足的,所以无论早晚,升级都会再次降级已经升级的包。或者破坏包的兼容性(这通常是您不希望的!),这只能通过显式调用ignore-dependencies和force命令来实现。但这只是解决问题的方法,绝对不是普通用户的情况!


如果你真的想要更新你的安装包,而你通常不会这样做。在基本环境中运行的命令将更新其中的包,但通常应该使用虚拟环境(conda create -n myenv,然后conda activate myenv)。执行conda update——所有在这样一个环境中的操作都将更新该环境中的包。但是,由于基本环境也是一个环境,因此答案以相同的方式适用于这两种情况。

我用康达和皮普解决了这个问题。

首先,我跑:

conda uninstall qt和conda uninstall matplotlib和conda uninstall PyQt5

在那之后,我打开cmd并运行这段代码

pip卸载qt, pip卸载matplotlib, pip卸载PyQt5

最后,您应该通过pip安装matplotlib的代码来安装matplotlib