首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨平台环境下的conda环境管理

跨平台环境下的conda环境管理
EN

Stack Overflow用户
提问于 2019-09-19 19:13:52
回答 1查看 3.9K关注 0票数 3

我的项目应该在跨平台环境(Mac,Win,Linux)上运行。我已经创建了一个conda环境来管理我们的依赖项,以便于设置。我想确保每个想要更新enn的人都可以这样做,但是当我尝试将env从linux导出到yml文件时,它无法在Win或Mac上正确安装,反之亦然。

我已经试着做一些常规的事情了:

  1. conda环境导出> env.yml

conda env create --name -f env.yml

  1. conda环境导出--无内部版本> env.yml

  1. https://medium.com/@Amet13/building-a-cross-platform-python-installer-using-conda-constructor-f91b70d393

  1. https://tech.zegami.com/conda-constructor-tutorial-make-your-python-code-easy-to-install-cross-platform-f0c1f3096ae4

  1. https://github.com/ESSS/conda-devenv/blob/master/README.rst

以上都不能给我正确的答案。我附带的一些教程可能会有所帮助,但我没有成功地正确实现它们,并且它们没有包含正确完成教程的一些重要信息。

例如:关于3/4 -它没有解释如何创建应该构造环境的yml文件。

我了解到conda应该在跨平台环境下工作。如果有人能帮我那就太好了。

EN

回答 1

Stack Overflow用户

发布于 2019-09-20 00:55:43

Conda环境本身并不是跨平台的

抱歉,但你所要求的根本不是什么东西。Conda可以将环境的包信息序列化为YAML (重复性很好),但它不能保证它将是跨平台的。事实上,许多包,特别是那些包含非Python代码的包,需要不同的底层构建工具作为依赖项,因此您所要求的永远不会得到满足。

仅限显式规格

这些天你能得到的最接近的结果就是使用--from-history标志限制你的environment.yaml只包含在创建你的环境时使用的显式规范。此功能需要Conda v4.7.12或更高版本。

代码语言:javascript
复制
conda env export --from-history > environment.yaml

这将生成一个YAML,它只包含在环境的历史记录中显式请求的包,例如,如果您的历史记录是...

代码语言:javascript
复制
conda create -n foo python=3.7 numpy
conda install -n foo pandas scikit-learn

然后,conda env export -n foo --from-history的结果将如下所示

代码语言:javascript
复制
name: foo
channels:
  - defaults
dependencies:
  - python=3.7
  - numpy
  - pandas
  - scikit-learn
prefix: /your/conda/dir/envs/foo

这样,您就可以省略所有其他依赖项,这些依赖项最终可能是特定于平台的。

我还能看到一大堆包裹?!

我注意到,如果有人在环境中使用--update-deps标志,它会将每个依赖项添加到显式规范中。这是相当不幸的。如果是这样的话,我建议您使用合法的规范重新创建env,并在将来避免使用该标志。通过your command history进行搜索在编译合法规范列表时可能很有用。

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

https://stackoverflow.com/questions/58009732

复制
相关文章

相似问题

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