我尝试了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

它的工作原理!

其他回答

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

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

首先,我跑:

conda uninstall qt和conda uninstall matplotlib和conda uninstall PyQt5

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

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

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

我同意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.只包含您实际需要的包,并仅在必要时正确地更新它们。

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

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

pandas scikit-learn matplotlib 笔记本 努力

我总共有84个包裹。

更准确地回答这个问题:

conda(对于miniconda是conda,对于Anaconda是conda)只更新包的特定版本——> major和minor。这就是范例。

在文档中,你会发现“注意:Conda更新到其系列中的最高版本,因此Python 2.7更新到2中可用的最高版本。X系列和3.6更新到最高可用的3。x系列。” 医生

如果王没有给出一个可重复的例子,人们只能提供帮助。 例如,他想要更新的真的是虚拟环境吗?或者他能得到他/她想要的

conda update -n ENVIRONMENT --all

*请在执行“更新—全部”之前阅读文档! 这并不会导致所有包的更新。因为conda试图解决环境中所有包之间的依赖关系,这可能导致没有警告的降级包。


如果你只想更新几乎所有,你可以创建一个pin文件

echo "conda ==4.0.0" >> ~/miniconda3/envs/py35/conda-meta/pinned
echo "numpy 1.7.*" >> ~/miniconda3/envs/py35/conda-meta/pinned

在运行更新之前。康达问题没有被固定

如果稍后你想忽略env中的文件进行更新,你可以这样做:

conda update --all --no-pin

您不应该执行update—all。如果你需要它,你可以在克隆环境中测试它。

第一步应该始终是备份当前的规范:

conda list -n py35 --explicit 

(但即便如此,也不总是有一个链接到可用的源代码-比如jupyterlab扩展)

接下来你可以克隆和更新:

conda create -n py356 --clone py35

conda activate py356
conda config --set pip_interop_enabled True # for conda>=4.6
conda update --all

第二problem


更新:

目前我将使用曼巴(或micromamba)作为conda pkg-manager的替代品


更新:

因为conda的想法很好,但它不适合复杂的环境,我个人更喜欢nix-shell(或lorri)和诗歌的组合[作为优于pip/conda .-)](介绍poetry2nix)。

或者,您可以使用nix和mach-nix(其中您只需要您的需求文件。它能最好地解决和构建环境。


在Linux / macOS上,你可以使用nix

nix-env -iA nixpkgs.python37

进入一个包含Python3.7的环境(当然你可以更改版本)

或者作为一个非常好的Python(高级)环境,你可以使用mach-nix(与nix)一样

mach-nix env ./env -r requirements.txt 

(它甚至支持conda[但目前处于测试版])

或者通过API

nix-shell -p nixFlakes --run "nix run github:davhau/mach-nix#with.ipython.pandas.seaborn.bokeh.scikit-learn "

最后,如果您确实需要使用由于依赖关系而不兼容的包,可以使用像NixOS/nix-pkgs这样的技术。