- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试遵循安装完全固定依赖项的最佳实践(对于可重复构建和更好的 Docker 缓存,请参阅 this pythonspeed.com article)。
我的项目需要同时使用 conda 和 pip(conda 用于复杂的 ML 包,pip 用于 conda 上不可用的东西)。 conda-lock和 pip-compile工具能够在固定版本中生成所有传递依赖项。但是,这些工具是独立 : 当我运行 pip-compile 时,它不知道 conda-lock 要安装的依赖项,反之亦然。
这会导致不同的包版本,导致 Docker 镜像中的空间浪费,并可能导致损坏/不兼容,如 pip install
step 安装一些可传递依赖项的不同版本。
在使用 时,有没有人有更好的解决方案来创建固定的 Python 依赖项列表? conda 和 pip ?
(编辑:这是关于 conda-lock 的 github 票证,用于支持 pip 依赖项:https://github.com/conda-incubator/conda-lock/issues/4)
最佳答案
您可以安装所有依赖项,然后使用 conda env export
,而不是使用解决依赖项的工具。生成固定/版本化 environment.yaml
.
主要缺点:重量较重,因为它实际上必须安装所有依赖项。从好的方面来说,您最终只有一个环境“规范”环境文件作为输入,以及一个环境“锁定”文件作为输出。
在 environment-spec.yaml 中指定直接依赖项
一起指定 conda 和 pip 依赖项。例子:
name: base
channels:
- conda-forge
- defaults
# etc.
dependencies:
- matplotlib
- pandas
- pip # needed to have a pip section below
- scikit-learn
- pip:
- pyplot_themes # only available on PyPI
安装依赖项并导出固定版本(包括传递依赖项)
# syntax=docker/dockerfile:1
# Note: using miniconda instead of micromamba because micromamba lacks the
# `conda env export` command.
FROM continuumio/miniconda3:4.9.2
COPY environment-spec.yml /environment-spec.yml
# mounts are for conda caching and pip caching
RUN --mount=type=cache,target=/opt/conda/pkgs --mount=type=cache,target=/root/.cache \
conda env create -n regen_env --file /environment-spec.yml
# Export dependencies.
RUN conda env export -n regen_env > /environment-lock-raw.yml
CMD ["cat", "/environment-lock.yml"]
然后你可以像这样创建一个固定的环境文件(假设上面的 dockerfile 被命名为
regen_environment.Dockerfile
):
docker build -t regen_env -f regen_enviroment.Dockerfile .
docker run --rm regen_env > environment-lock.yaml
这会将固定环境文件输出到
environment-lock.yaml
,然后您可以使用
conda install -f environment-lock.yaml
安装它.
关于python - 使用 conda 和 pip 时,如何在 Python 中固定版本化依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68171629/
尝试使用命令 conda update conda 从终端更新 conda 时出现错误.它在说: Solving environment: failed UnsatisfiableError: The
在 conda 中,当我尝试安装软件包时,出现此错误: CorruptedEnvironmentError: The target environment has been corrupted. C
我想在一个特定的 conda 环境中安装带有 conda 的程序,并能够使用来自所有 conda 环境的相关命令。 我的目标是让学生在任何平台(尤其是 Windows)上安装 Mercurial(加上
我遇到了一个麻烦的问题。 我的 pip 和 /home/xxx/local/anacoda2/bin 的 python 都可以,但是 conda 仍然不起作用。当我在我的 ubuntu16.04 终端
我已经在普通机器上设置了 Conda 环境。它工作正常。我想在一台无法访问互联网的机器上克隆这个环境(我只能通过 SSH 进入)。 我最初的想法是压缩 Conda 留下的包缓存并将其移动到气隙机器上的
我想要两个环境:生产环境是测试环境的严格子集。我如何使用 Conda(或 micromamba)实现这一目标? 测试需要一些不需要捆绑在生产 docker 镜像中的额外实用程序。主要思想是确保生产安装
每次打开终端时都会显示以下代码行。 Traceback (most recent call last): File "", line 3, in ImportError: No module n
我尝试使用以下命令更新 conda: ~$ conda update conda 它输出以下消息: WARNING conda.base.context:use_only_tar_bz2(632):
如何仅列出 conda 中针对特定环境显式安装的软件包?有没有办法做到这一点? 最佳答案 @Sjlver 的评论链接到的页面( https://github.com/conda/conda/issue
conda 文档指定: conda clean [-h] [-y] [--dry-run] [--json] [--debug] [--verbose] [-q] [-a] [-i] [-l] [-t
当我克隆一个 Conda 环境时 conda create --name thenewenv --clone theorigenv 我注意到 theorigenv 的修订历史丢失了 conda act
我在 Conda 环境中安装了一堆软件包,包括带有 NVIDIA 工具包的 docker 容器和一些其他非 python 库。安装占用了大约 10 GB 的磁盘空间。但是当我删除 Conda 环境时,
documentation指出克隆以这种方式工作:conda create --name myclone --clone myenv但是,这将始终默认创建环境 myclone进入我几乎没有磁盘存储空间
这个问题在这里已经有了答案: Why are packages installed rather than just linked to a specific environment? (1 个回答)
How to list package versions available with conda有有用的答案,其中之一在 https://stackoverflow.com/a/47795843/2
后 conda update --all 我无法再启动 spyder。如果我在终端中运行 spyder,我会收到以下错误: /anaconda3/bin/pythonw: line 3: /anaco
对于给定的 conda包,我如何列出依赖它的包? 我最近在一个已经有 MPI (openmpi) 版本的大学集群上安装了 anaconda。 mpich2包和mpi4py与 anaconda 一起安装
创建虚拟环境时可以将路径/Users/nolan/miniconda/envs/更改为另一个路径吗?我希望它特定于我的项目目录。 (正如我们可以使用 virtualenv 所做的那样) $conda
激活 conda 环境时,conda 会记住之前激活的环境。例如,如果没有激活任何环境,则调用 conda activate foo 然后调用 conda deactivate 将导致没有任何环境处于
我使用 PyCharm 创建了一个带有 conda 解释器的项目。 Pycharm自动为其创建conda环境。不久之后,我意识到我想要该项目的另一个地点。因此我删除了项目文件夹。然后我意识到我要删除
我是一名优秀的程序员,十分优秀!