Mamba 将软件包安装到错误的环境中

Mamba installing a package into wrong environment

背景是,我负责维护我们团队用于分析的精美 Docker 图片。它使用 Jupyter notebook image 作为基础,然后添加各种自定义、额外的包等

其中一位团队成员最近想 运行 Tensorflow。没问题,我会 运行 mamba install 并将其添加到图像中。然而,这产生了一个问题:Tensorflow 2.4.3(最新版本)在某种程度上与 R 4.1.1(也是最新版本)或生态系统中的其他东西不兼容,导致 R 降级到 3.6.3。所以我创建了一个新环境并在其中安装了 TF:

FROM hongooi/jupytermodelrisk:1.0.0

RUN mamba create -n tensorflow --clone base

# Make RUN commands use the new environment
RUN echo "conda activate tensorflow" >> ~/.bashrc

SHELL ["/bin/bash", "--login", "-c"]

RUN mamba install -y 'tensorflow=2.4.3'

但是当我重建镜像时,我发现虽然创建了tensorflow env,但Tensorflow包已经安装到base env中,而不是tensorflow env。有人遇到过这种情况么?我可以验证,如果我登录到容器,tensorflow env 已经创建:它只是不包含 Tensorflow 包。

如果 运行 来自容器内部的 createactivateinstall 命令,我不会遇到这个问题。仅当我尝试在 Docker 文件中执行此操作时。

我使用 mamba 而不是 conda,因为考虑到安装的软件包数量,conda 需要永远 运行。事实上,尝试 运行 conda install tensorflow 会在 ~5 小时后崩溃。

不是 dockerfiles 方面的专家,但通常您可以使用安装命令的 -n 标志来指定安装的目标环境,如下所示:

mamba install -n tensorflow -y tensorflow=2.4.3