坚持在 Anaconda 上解决环境问题

Joh*_*Sam 5 anaconda conda

我正在运行 OSX Catalina。下载 Anaconda 后,我遇到了麻烦downloading external packages。我在 GUI 和终端中都尝试过,但过程一直卡在"Solving environment"

我知道创建一个新环境可能是一种解决方法,但我更愿意解决手头的问题。

有任何想法吗?

Abd*_*ati 51

跑步

conda config --set channel_priority flexible
Run Code Online (Sandbox Code Playgroud)

为我工作

更新,仍然遇到了一些问题,所以我找到了Mamba,天哪,我的生活改变了 conda 是有史以来最糟糕的包管理器

当我使用曼巴时,我所有的问题都得到了解决

# install mamba
conda install -n base conda-forge::mamba

# use mamba
mamba install pandas
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,我在尝试安装曼巴时遇到了这个问题:/ (22认同)
  • 不得不等待一个多小时才能安装 Mamba(感谢 Conda) - 但它的速度改变了生活! (6认同)

Via*_*kov 45

用这个:

conda config --set channel_priority strict
Run Code Online (Sandbox Code Playgroud)

注意是channel_priority而不是priority_channel

  • 如果它对某人有帮助:这解决了我的“解决环境永远”问题,但我还必须重新排序“environment.yml”文件中的通道列表。我首先将“conda-forge”放在前面,然后将“pytorch”等特定于包的通道放在最后,然后将“defaults”放在最后。从文档看来,一旦在高优先级通道中找到包,这似乎会导致 conda 跳过在低优先级通道中的搜索,从而缩小搜索空间,但通道顺序非常重要。 (16认同)

Pyt*_*ous 22

已经有很多好的评论 - 让我尝试巩固并添加更多想法:

主要背景点是 conda 正在解决布尔可满足性问题 https://en.wikipedia.org/wiki/Boolean_satisfiability_problem(通俗地说:依赖地狱 https://en.wikipedia.org/wiki/Dependency_hell)。

更多详细信息请参见:https://docs.conda.io/projects/conda/en/4.13.x/dev-guide/deep-dive-solvers.html

在早期,包裹相对较少,这并不是世界末日。现在,由于有许多软件包,每个软件包都有许多版本,conda 的非优化代码可能会花费很长时间。

  1. mamba是一种用 C 重写的 conda 克隆,速度快得多。奇迹般有效。推荐的安装方法是下载 mambaforge,否则您可以从 anaconda 或 miniconda 安装它。阅读文档: https: //mamba.readthedocs.io/en/latest/
  2. 如果无法安装 mamba,可以将mamba 求解器与 conda 结合使用。Anaconda 网站上的详细信息:https ://www.anaconda.com/blog/conda-is-fast-now
  3. mamba 和 libmamba 求解器无法在使用 zscaler 的公司代理后面工作。这是 zscaler 的一个错误,它用“_ransfer-Encoding”而不是“Transfer-Encoding”发回数据包。这会甩掉曼巴,但不会甩掉康达。该错误记录在 github https://github.com/mamba-org/mamba/issues/2197https://github.com/mamba-org/mamba/issues/2438上
  4. 如果您可以在一台计算机上访问 mamba,但不能在另一台计算机上访问,您可以:基于 yml 文件创建一个包含 mamba 的环境,该文件仅包含您需要的包(例如 pandas);创建环境后,您可以导出 yml 文件,该文件将包含您未指定的所有依赖项(例如 numpy 和 pandas)以及每个包的确切版本。然后,您可以根据更详细的 yml 文件,仅使用 conda 在计算机上创建新环境。这样,较慢的 conda 不必解决包 x 是版本 2.3 的问题,但只有版本 1.9 可以与包 y 等一起使用
  5. 解决方案 4 仍然需要 conda 来解决问题,即使是一个更有限的问题。如果这需要很长时间,您可以使用 mamba 构建环境,然后以 pip 所需的格式导出需求文件,并在速度较慢的 PC 上使用 pip 安装所有软件包。此处详细说明:/sf/answers/5266798631/
  6. 一般来说,尽量避免在大型环境中加载不需要的包。出于同样的原因,如果可以的话,请避免使用 Anaconda,而只需使用 miniconda、miniforge 或 mambaforge 构建所需的环境。如果您有不同类型的项目,例如一组数据科学项目和一个与网络相关的项目,请维护两个独立的环境。较小的环境和较少的包意味着 conda 发生冲突的机会更少,解决时间也更快。
  7. 将通道优先级设置为 strict这意味着 conda 将按照您在 .condarc 文件中指定的顺序搜索频道,因此如果它在第一个https://conda.io/projects/conda/en/中找到所需的所有内容,则不会搜索第二个频道最新/用户指南/任务/manage-channels.html
  8. 出于上述原因,如果您知道大多数软件包都有两个渠道可用,请将较小的渠道放在第一位。这就是为什么在默认设置下,miniconda 比 miniforge 更快的原因之一:因为 miniconda 搜索 te conda 存储库,而 miniforge 搜索 conda-forge,后者要大得多。但请注意许可条款 https://www.anaconda.com/blog/anaconda-commercial-edition-faq商业用户需要许可证才能访问 anaconda 存储库 - 但如果我理解正确的话,则不需要访问 conda-锻造

如果您知道任何其他潜在的解决方案或建议,请分享!

最后,我要补充一点,新版本的 conda 引入了并行下载,但是,根据我的经验,主要瓶颈不是下载,而是解决环境问题。


Jat*_*tra 11

以下步骤可能有助于解决该问题。

conda config --remove channels conda-forge
conda config --add channels conda-forge
Run Code Online (Sandbox Code Playgroud)

如果它不起作用,那么试试这个

conda update conda
Run Code Online (Sandbox Code Playgroud)

如果没有任何效果,请尝试查看此github 解决方案,它对许多人都有效。

  • `'conda-forge' 不在配置文件的 'channels' 键中` (24认同)
  • 我将通道优先级更改为严格和灵活,但两者仍然不起作用。我不明白如何添加环境变量的路径。我也在使用MacOS (3认同)
  • _`conda config --removechannels conda-forge`_ OP首先使用conda-forge吗? (3认同)

小智 11

以下内容对我有用。

分拆于https://github.com/conda/conda/issues/11919

安装更快的 Conda 解析器( https://www.anaconda.com/blog/a-faster)会对您有所帮助,而不是等待(可能几个小时)来解决 SAT(众所周知的 NP 完全问题)环境-conda-for-a-development-community)。如您所知,Anaconda 默认情况下不安装解析器,因此您需要手动安装。

sudo conda update -n base conda

sudo conda install -n base conda-libmamba-solver

conda config --set solver libmamba
Run Code Online (Sandbox Code Playgroud)

重新运行conda install

conda install pytorch torchvision torchaudio pytorch-cuda=11.7 \
 -c pytorch -c nvidia
Run Code Online (Sandbox Code Playgroud)

希望对你有帮助。

  • 当然,尝试安装 mamba 会让您陷入解决环境问题! (5认同)

小智 10

请检查 python 是否确实列在environment.yml或中conda create -n your_environment --file requirements.txt python=3.7。否则,conda 将遍历所有可用的 python 版本。 检查 Python 是否已列出。


Far*_*aji 7

更新的 conda 版本优于4.12.0“Libmamba”,具有以下优点:

\n
    \n
  • 将 conda\xe2\x80\x99s 解析速度提高 50-80%*

    \n
  • \n
  • 最大限度地向后兼容,以免破坏任何当前
    功能\n

    \n
  • \n
  • 为其他人构建插件基础设施以创建自定义求解器

    \n
  • \n
\n

Anaconda 的官方博客文章 A Faster Solver for Conda: Libmamba中提到

\n

因此,为了使 libmamba 成为您的默认求解器(确保您的 conda 版本是 4.12):\nconda install -n base conda-libmamba-solver

\n

并暂时尝试一下:conda create -n demo --experimental-solver=libmamba --dry-run install <some package>

\n


小智 -3

选一个:

  • 从新安装 Anaconda 开始。安装时注意确保您的安装路径是主文件夹的子文件夹,例如/Users/me/anaconda3
  • 使用 .sh 安装程序而不是 .pkg 安装程序重新开始。此安装程序使选择目标路径变得更加简单,并为您提供了更多关于 shell 行为方式的选择。

查看链接了解更多详情

这是环境故障的另一个答案,但适用于 Windows 操作系统