更准确地回答这个问题:
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这样的技术。