是否有等同于 pip install 的 `--root` 路径选项的 conda (mamba)?
Is there a conda (mamba) equivalent to pip install's `--root` path option?
背景
我有一个用于 JupyterLab 图像的多阶段 Dockerfile。分为三个阶段:
server
kernel
: mamba create -y -n /tmp/kernel-packages/myenv ...
runner
:
FROM ... as runner
...
COPY --from=kernel /tmp/kernel-packages/ /opt/conda/envs
RUN conda config --append envs_dirs /opt/conda/envs/
...
问题
在生成的图像中,the preferred python -m pip
有效,但 pip
给出:
bash: /opt/conda/envs/myenv/bin/pip: /tmp/kernel-packages/myenv/bin/python3.9: bad interpreter: No such file or directory
原因是 pip
有 #!/tmp/kernel-packages/myenv/bin/python3.9
作为它的 shebang。
预计
像 pip install --root /tmp/server-packages ...
这样的行为在 COPY --from=server /tmp/server-packages /
中工作得很好。
附加信息
此外,其他一些二进制文件,如 curl
或 papermill
也有错误的路径,由 conda
硬编码。我读过 Anaconda | Moving Conda Environments,但使用 conda-pack
和 conda-unpack
.
似乎有点矫枉过正
解决方法
只需按名称创建一个环境:mamba create -y -n myenv
然后在 runner
阶段 COPY --from=kernel /opt/conda/envs /opt/conda/envs
.
问题
是否有与 pip install
的 --root
选项等效的 Conda (Mamba)? 我不是在寻找上述问题的解决方案就像我一样,我已经找到了一种适合我的方法。我的兴趣纯粹是 conda
二进制文件的功能。
--prefix
参数是等效的 - 只是一些 Conda 包使用硬编码路径,因此您遇到了这个问题。
conda-prefix-replacement
要通过 COPY 操作将 Conda 环境正确移动到新前缀,需要 运行 conda-prefix-replacement
工具(a.k.a., cpr
)确保所有具有硬编码路径的文件都更新到新位置。据推测,conda-pack
也在做类似的事情,只是 under-the-hood.
出于您的目的,您可以考虑 pre-running cpr
内核映像中的环境,以便它们准备好在部署位置工作。尽管那意味着总是复制到同一位置。
有关使用的详细信息,请参阅 the cpr
repository。
背景
我有一个用于 JupyterLab 图像的多阶段 Dockerfile。分为三个阶段:
server
kernel
:mamba create -y -n /tmp/kernel-packages/myenv ...
runner
:
FROM ... as runner
...
COPY --from=kernel /tmp/kernel-packages/ /opt/conda/envs
RUN conda config --append envs_dirs /opt/conda/envs/
...
问题
在生成的图像中,the preferred python -m pip
有效,但 pip
给出:
bash: /opt/conda/envs/myenv/bin/pip: /tmp/kernel-packages/myenv/bin/python3.9: bad interpreter: No such file or directory
原因是 pip
有 #!/tmp/kernel-packages/myenv/bin/python3.9
作为它的 shebang。
预计
像 pip install --root /tmp/server-packages ...
这样的行为在 COPY --from=server /tmp/server-packages /
中工作得很好。
附加信息
此外,其他一些二进制文件,如 curl
或 papermill
也有错误的路径,由 conda
硬编码。我读过 Anaconda | Moving Conda Environments,但使用 conda-pack
和 conda-unpack
.
解决方法
只需按名称创建一个环境:mamba create -y -n myenv
然后在 runner
阶段 COPY --from=kernel /opt/conda/envs /opt/conda/envs
.
问题
是否有与 pip install
的 --root
选项等效的 Conda (Mamba)? 我不是在寻找上述问题的解决方案就像我一样,我已经找到了一种适合我的方法。我的兴趣纯粹是 conda
二进制文件的功能。
--prefix
参数是等效的 - 只是一些 Conda 包使用硬编码路径,因此您遇到了这个问题。
conda-prefix-replacement
要通过 COPY 操作将 Conda 环境正确移动到新前缀,需要 运行 conda-prefix-replacement
工具(a.k.a., cpr
)确保所有具有硬编码路径的文件都更新到新位置。据推测,conda-pack
也在做类似的事情,只是 under-the-hood.
出于您的目的,您可以考虑 pre-running cpr
内核映像中的环境,以便它们准备好在部署位置工作。尽管那意味着总是复制到同一位置。
有关使用的详细信息,请参阅 the cpr
repository。