解决conda环境卡死

Solving conda environment stuck

我正在尝试使用以下命令安装 conda 环境:

conda env create -f devenv.yaml

我的 .yaml 文件是

name: myname
channels:
  - conda-forge
  - bioconda
dependencies:
  # Package creation and environment management
  - conda-build
  # Automation control (command line interface, workflow and multi-process management)
  - python-dotenv
  - click
  - snakemake-minimal
  - joblib
  - numba
  # Workspace
  - notebook
  # Visualization
  - plotly
  - plotly-orca
  - matplotlib
  - seaborn
  - shap
  - openpyxl
  - ipywidgets
  - tensorboard
  # Data manipulation
  - numpy
  - pandas
  - pyarrow
  # Functional style tools
  - more-itertools
  - toolz
  # Machine learning
  - scikit-learn
  - imbalanced-learn
  - scikit-image
  - statsmodels
  - catboost
  - hyperopt
  - tsfresh
  # Deep learning
  - pytorch
  # code checking and formatting
  - pylint
  - black
  - flake8
  - mypy
  # Python base
  - python
  - pip
  - pip:

我尝试更新 conda,但没有用。它只是停留在解决环境问题上。

康达版本:4.11.0 c OS:Ubuntu 18.04.5 LTS

完全相同的环境在我的 mac 上工作正常,但在那个服务器上却不行。可能是什么问题?我感谢任何建议。谢谢

这解决得很好 (),但确实是一个复杂的解决方法,主要是因为:

  • 规格不足
  • 缺乏模块化

规格不足

这个特定的环境规范最终安装了 300 多个包。并且没有一个受规范约束。这是一个需要解决的巨大 SAT 问题,Conda 将为此苦苦挣扎。 Mamba will help solve faster,但提供额外的约束可以大大减少解决方案 space。

至少指定一个 Python 版本 (major.minor),例如 python=3.9。这是最有效的约束。

除此之外,对中央包(那些依赖于其他包的包)提出最低要求会有所帮助,例如最低 NumPy。

缺乏模块化

我假定名称“devenv”表示这是一个开发环境。所以,我知道有人想要立即使用所有这些工具。然而,Conda 环境激活非常简单,如今大多数 IDE 工具(Spyder、VSCode、Jupyter)都鼓励将基础设施与执行内核分离。对环境(强调复数)的组织方式和协同工作方式进行更深思熟虑,可以在拥有可持续且无痛的数据科学工作流程方面大有帮助。

手头的环境在我的书中有多个危险信号:

  • conda-build 应该在 base 并且只在 base
  • snakemake 应该在专用环境中
  • notebook(即Jupyter)应在专用环境中,与nb_conda_kernels共同安装;所有内核环境需要 ipykernel

我可能还会将 linting/formatting 包分开,但这不是什么大问题。真正的杀手是 snakemake - 它只是一个庞大的基础设施,我强烈建议将其分开。