首页 > 编程问答 >更新基础虚拟环境想要删除一些软件包

更新基础虚拟环境想要删除一些软件包

时间:2024-08-01 04:32:33浏览次数:14  
标签:python anaconda conda conda-update

注意 : 这个问题与下面的问题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:
...

我的问题是:

  1. 为什么更新需要删除这些包?
    我可以推测这些包没有兼容的版本正在安装一些其他软件包,尽管这对我来说似乎很奇怪,特别是对于此处列出的非常重要的软件包。 此外,conda 将如何选择更新软件包 X1、X2 等,以删除 Y1、Y2...为代价,而不是不更新也不删除?
  2. 如果继续,我会失去任何功能吗?
    例如,我不愿意删除 nbclient
  3. 有什么方法可以更新以避免功能损失和冲突吗?
    建议使用 --freeze-installed ,但我是不确定 避免功能损失和冲突

相关

  1. https://github.com/conda/conda/issues/12643
    我尝试过|| |按照 conda install anaconda=custom 这篇文章 在线程中的建议,但它仍然会删除软件包。 https://github.com/conda/conda/issues/8842
  2. 我尝试过
    , 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
  3. conda 想要删除我的一半如果我尝试仅更新一个软件包(在全新的 Anaconda 安装上)
  4. 使用 Conda 更新特定模块会删除大量软件包
  5. 当我只想删除一个软件包时,为什么 conda 想要更新不相关的软件包?
  6. 编辑

根据 darthbith 的评论和后续问题: 为什么你的基础环境中安装了这么多软件包?

  1. 我现在不记得了。在base中安装它们的可能原因是:1)错误,2)其他选项失败,这是当时的最后手段,3)当时我不知道venvs的使用(不太可能)。 ||将被降级的软件包的完整列表是什么?
    要降级的软件包是

  2. 看起来您的基础环境有Python 3.7,它已经达到了生命周期的终点,所以有可能新版本的 conda 不支持 Python 3.7,因此删除/降级。 diff-match-patch heapdict html5lib intervaltree jdcal jsonschema path.py pathtools tblib threadpoolctl wcwidth xmltodict 我知道,但似乎我很沮丧,至少在基础上。由于同样的原因,我无法更新 conda 或 python。
  3. 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 的更新版本和所需的软件包。这是一种更干净、更可靠的方法:

  1. 创建一个新环境: bash conda create -n myenv python=3.9 # 或想要的任何 Python 版本 myenv 替换为喜欢的环境名称。

  2. 激活新环境: bash conda activate myenv

  3. 安装需要的软件包: bash conda install numpy pandas jupyter # 等

  4. 确认一切正常: 测试的代码并确保在新环境中一切正常。

其他技巧

  • 始终使用环境: 对于每个项目或任务,创建一个新的 Conda 环境,以避免软件包冲突。
  • 定期更新 Conda: 在的基础环境中,定期运行 conda update -n base conda 以使 Conda 本身保持最新状态。
  • 考虑使用 mamba Mamba 是 Conda 的快速替代品,可以更有效地解决依赖关系。

如果必须更新基础环境

如果绝对必须更新基础环境,请尝试以下操作,但请注意,这可能会导致问题,因此请谨慎操作:

  1. 创建环境备份: 在进行任何更改之前,请备份的环境。
  2. 尝试 conda update --all 这将尝试更新所有软件包。
  3. 逐个解决冲突: 如果 conda update --all 失败,需要手动解决每个冲突。这可能很耗时,并且需要对 Conda 和软件包依赖关系有深入的了解。

我希望这些步骤可以帮助解决 Conda 环境问题。请记住,始终使用环境是最佳实践。

标签:python,anaconda,conda,conda-update
From: 78817606

相关文章

  • conda update python 不会更新,但 conda update --all 会更新
    我正在尝试更新我的venv。这就是我看到的(base_test)>condaupdatepythonCollectingpackagemetadata(current_repodata.json):doneSolvingenvironment:done==>WARNING:Anewerversionofcondaexists.<==currentversion:4.10.3latestversion:24......
  • 如何使用 Selenium (python) 访问另一个影子根中影子根中的元素?
    我有以下代码和HTML结构(我不是这方面的专家)。我正在尝试抓取HTML代码末尾的96.00C元素,其路径是:Xpath://*[@id="_grid"]/set-class2/div2/text-binding//text()完整Xpath:/html/body/main/div/div3/div3/......
  • 在Python中,如何在一段时间内接受输入
    我正在尝试用Python制作一个蛇游戏,但不知道如何制作它,以便蛇在没有玩家输入的情况下继续移动,所以如果有人知道一个简单的方法来做到这一点,我需要在2秒后取消输入将不胜感激代码如下:importrandomimportsysplayerY=(1)playerX=(0)appleY=random.randint(1,10)appl......
  • 在Python中单步执行代码时是否可以引发异常
    当我在IDE(例如PyCharm)中单步执行代码时,我想转储函数的参数(以供以后使用,例如复制它)。计划的场景是在某处设置断点,然后引发异常(这不在我运行的代码中,这就是重点),并捕获它。代码应该如下所示:defexception_cathcher_decorator(func):try:returnfunc(*f_args,**f_k......
  • 解决python自动化操作异常处理的问题
    在python自动化领域,往往要用到pyautogui,pywin32等模块实现自动化操作。然而,这种自动化操作,本身具有一定的局限性,其中最主要的一个问题就是,一旦执行结果不按照脚本预设的来执行,往往会抛出异常,导致程序中断。解决这个问题,主要有这么几种思路:第一,每一次操作后分情况讨论。这种方......
  • Python爬虫入门03:用Urllib假装我们是浏览器
    文章目录引言Urllib库简介Request模块详解Error模块与异常处理Parse模块与URL解析Robotparser模块模拟浏览器请求使用Request方法添加请求头信息代码示例1.设置请求URL和请求头2.定义请求参数并转换为适当的格式3.使用Request方法封装请求4.发送请求并获取响应常用......
  • 请以零基础学Python 之 第二十讲 分组和贪婪匹配
    当我们处理字符串时,有时候需要根据特定的模式来分割或者提取信息。Python提供了强大的正则表达式库re,可以帮助我们实现这些复杂的字符串操作。本篇博客将介绍两个常用的正则表达式技巧:分组和贪婪匹配。分组(Grouping)在正则表达式中,分组是将多个模式单元组合为一个单元,以便......
  • 零基础学python 之 第十九讲 正则表达式
    当你开始学习Python编程时,正则表达式是一项非常强大的工具,用于处理文本数据中的模式匹配和搜索。本篇博客将带你从零开始学习如何在Python中使用正则表达式。1.什么是正则表达式?正则表达式(RegularExpression)是用于描述字符串模式的一种工具,可以用来匹配、查找、替换符合特......
  • python之贪吃蛇
    废话不多说,直接上代码(确保已经安装pygame)importpygameimportrandom#基础设置#屏幕高度SCREEN_HEIGHT=480#屏幕宽度SCREEN_WIDTH=600#小方格大小GRID_SIZE=20#颜色设置WHITE=(255,255,255)BLACK=(0,0,0)GREEN=(0,255,0)#初始化Pyg......
  • Python - Context Managers
    withstatementHereisthesyntaxofthewithstatement:withexpressionasvar:statementsTheexpressionshouldbeacontextmanagerobject,oritshouldproduceacontextmanagerobject.Whenthiswithstatementisexecuted,thefirstthingthat......