注意 : 这个问题与下面的问题Q5相关。 但它是不同的,因为:1)就我而言,只需要删除几个包(我的问题的原因是否与问题5相同尚不清楚),2)我问不同的具体问题,没有在那里问,3)我正在添加我尝试过但不起作用的东西。
我目前正在使用 Anaconda,并且我发现版本/更新/venvs 存在无数问题。
我不确定这些问题中哪些是相关的。
问题之一是,在 venv
base
中,我得到
> conda update -n base -c defaults conda
Collecting package metadata (current_repodata.json): done
Solving environment: done
==> WARNING: A newer version of conda exists. <==
current version: 4.10.3
latest version: 24.7.1
Please update conda by running
$ conda update -n base -c defaults conda
...
The following packages will be downloaded:
...
------------------------------------------------------------
Total: 208.9 MB
The following NEW packages will be INSTALLED:
...
The following packages will be REMOVED:
async_generator-1.10-py37h28b3542_0
jupyter-packaging-0.7.12-pyhd3eb1b0_0
jupyterlab_pygments-0.1.2-py_0
nbclient-0.5.3-pyhd3eb1b0_0
pympler-0.9-py_0
...
The following packages will be DOWNGRADED:
...
我的问题是:
-
为什么更新需要删除这些包?
我可以推测这些包没有兼容的版本正在安装一些其他软件包,尽管这对我来说似乎很奇怪,特别是对于此处列出的非常重要的软件包。 此外,conda 将如何选择更新软件包 X1、X2 等,以删除 Y1、Y2...为代价,而不是不更新也不删除? -
如果继续,我会失去任何功能吗?
例如,我不愿意删除nbclient
-
有什么方法可以更新以避免功能损失和冲突吗?
这 建议使用--freeze-installed
,但我是不确定 避免功能损失和冲突
相关 :
-
https://github.com/conda/conda/issues/12643
我尝试过|| |按照conda install anaconda=custom
这篇文章 在线程中的建议,但它仍然会删除软件包。 https://github.com/conda/conda/issues/8842 -
我尝试过
,conda update conda-build
,conda update anaconda
按照建议,所有这些仍然会删除软件包。 另外,conda install -c c3i_test2 anaconda
什么也不做。conda install --only-deps anaconda
https://community.anaconda.cloud/t/conda-update-conda-is-removing-core-packages/54325 - conda 想要删除我的一半如果我尝试仅更新一个软件包(在全新的 Anaconda 安装上)
- 使用 Conda 更新特定模块会删除大量软件包
- 当我只想删除一个软件包时,为什么 conda 想要更新不相关的软件包?
- 编辑
根据 darthbith 的评论和后续问题: 为什么你的基础环境中安装了这么多软件包?
-
我现在不记得了。在base中安装它们的可能原因是:1)错误,2)其他选项失败,这是当时的最后手段,3)当时我不知道venvs的使用(不太可能)。 ||将被降级的软件包的完整列表是什么?
要降级的软件包是 -
看起来您的基础环境有Python 3.7,它已经达到了生命周期的终点,所以有可能新版本的 conda 不支持 Python 3.7,因此删除/降级。diff-match-patch heapdict html5lib intervaltree jdcal jsonschema path.py pathtools tblib threadpoolctl wcwidth xmltodict
我知道,但似乎我很沮丧,至少在基础上。由于同样的原因,我无法更新 conda 或 python。 -
It looks like your base environment has Python 3.7, which has reached end of life, so it's possible that newer versions of conda do not support Python 3.7, hence the removals/downgrades.
I know, but it seems I am fried, at least in base. I cannot update either conda or python, because of the same reason.
让我们逐步解决的 Anaconda 环境问题。
了解问题
看起来遇到的是依赖冲突,这是软件包管理中的常见问题。简而言之,这意味着:
- Conda 需要更新自身以确保正常运行。 Conda 的最新版本可以提高性能、安全性并提供新功能。
- 某些当前安装的软件包与新版 Conda 不兼容。 这些不兼容可能是由于过时的代码、依赖关系冲突或对 Python 3.7 的支持已结束(的基础环境正在使用它)。
不建议更新基础环境
强烈建议 不要 在的基础环境中安装许多软件包。基础环境应该尽可能保持精简,主要用于 Conda 本身和其他基本工具。在基础环境中进行大量更改会增加依赖冲突的可能性,就像现在遇到的情况一样。
推荐的解决方案:创建一个新环境
与其尝试修复可能非常复杂的基础环境,我建议创建一个新的 Conda 环境,其中包含 Python 的更新版本和所需的软件包。这是一种更干净、更可靠的方法:
-
创建一个新环境:
bash conda create -n myenv python=3.9 # 或想要的任何 Python 版本
将myenv
替换为喜欢的环境名称。 -
激活新环境:
bash conda activate myenv
-
安装需要的软件包:
bash conda install numpy pandas jupyter # 等
-
确认一切正常: 测试的代码并确保在新环境中一切正常。
其他技巧
- 始终使用环境: 对于每个项目或任务,创建一个新的 Conda 环境,以避免软件包冲突。
-
定期更新 Conda:
在的基础环境中,定期运行
conda update -n base conda
以使 Conda 本身保持最新状态。 -
考虑使用
mamba
: Mamba 是 Conda 的快速替代品,可以更有效地解决依赖关系。
如果必须更新基础环境
如果绝对必须更新基础环境,请尝试以下操作,但请注意,这可能会导致问题,因此请谨慎操作:
- 创建环境备份: 在进行任何更改之前,请备份的环境。
-
尝试
conda update --all
: 这将尝试更新所有软件包。 -
逐个解决冲突:
如果
conda update --all
失败,需要手动解决每个冲突。这可能很耗时,并且需要对 Conda 和软件包依赖关系有深入的了解。
我希望这些步骤可以帮助解决 Conda 环境问题。请记住,始终使用环境是最佳实践。
标签:python,anaconda,conda,conda-update From: 78817606