首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有相当于pip的‘--root`’path选项的conda (mamba)?

是否有相当于pip的‘--root`’path选项的conda (mamba)?
EN

Stack Overflow用户
提问于 2022-03-22 10:27:09
回答 1查看 530关注 0票数 1

背景

我有一个用于JupyterLab图像的多级Dockerfile。有三个阶段:

  • server
  • kernelmamba create -y -n /tmp/kernel-packages/myenv ...
  • runner
代码语言:javascript
复制
FROM ... as runner
...

COPY --from=kernel /tmp/kernel-packages/ /opt/conda/envs
RUN conda config --append envs_dirs /opt/conda/envs/

...

问题

在生成的映像中,首选 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作为它的支撑点。

期望的

一种类似于pip install --root /tmp/server-packages ...的行为,它在COPY --from=server /tmp/server-packages /中非常好地工作。

更多信息

此外,一些其他二进制文件,如curlpapermill,也有由conda硬编码的错误路径。我读过关于Anaconda ?移动Conda环境的文章,但是使用conda-packconda-unpack似乎太过分了。

解决办法

只需按名称创建一个env:mamba create -y -n myenv,然后在runner阶段创建COPY --from=kernel /opt/conda/envs /opt/conda/envs

问题

有一个Conda (Mamba)等价于pip install**'s** --root 选项吗?--我并不是在寻找所述问题的解决方案,因为我已经找到了一种适合我自己的方法。我感兴趣的纯粹是conda二进制的功能。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-22 16:58:22

--prefix参数是等价的--只是一些Conda包使用硬编码路径,因此遇到了问题。

conda-prefix-replacement

要通过复制操作正确地将Conda环境移动到新前缀,需要运行conda-prefix-replacement工具(a.k.a.,cpr),以确保所有具有硬编码路径的文件都被更新到新位置。想必,conda-pack也在做一件类似的事情,只是一时半途而废.

出于您的目的,您可以考虑在内核映像中的环境上预先运行cpr,以便它们可以在部署的位置工作。尽管这意味着总是COPYing到相同的位置。

有关使用的详细信息,请参阅存储库

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71570442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档