我尝试了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(对于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这样的技术。

其他回答

想象一下包的依赖关系图,当包的数量增加时,在升级/添加包时遇到冲突的几率要高得多。要避免这种情况,只需在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这样的技术。

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

它的工作原理!

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

首先,我跑:

conda uninstall qt和conda uninstall matplotlib和conda uninstall PyQt5

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

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

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

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