我的项目应该在跨平台环境(Mac,Win,Linux)上运行。 我创建了一个conda env来管理我们的依赖项,从而简化安装过程。 我想确保每个想要更新enn的人都可以这样做,但是当我尝试将env从linux导出到yml文件时,无法在Win或Mac上正确安装,反之亦然。
我已经尝试做常规的事情:
1。
conda env导出> env.yml
conda env创建--name -f env.yml
2。 conda env导出--no-builds> env.yml
5。 https://github.com/ESSS/conda-devenv/blob/master/README.rst
以上都不是给我正确的答案...我所附的一些教程可能会有所帮助,但是我未能成功实现它们,并且其中不包含一些用于完成本教程的重要信息正确地。
例如: 关于3/4-它没有解释如何创建应构造环境的yml文件。
我知道conda应该可以在跨平台环境中工作... 如果有人可以帮助我,那就太好了。
答案 0 :(得分:1)
对不起,但是您要的不是什么。 Conda可以将环境的程序包信息序列化为YAML(非常可再现),但是不能保证它将是跨平台的。实际上,许多软件包,尤其是使用非Python代码的软件包,需要使用不同的基础构建工具作为依赖项,因此您所要求的将永远无法满足。
最近几天,您可以得到的限制是限制environment.yaml
仅包含使用--from-history
标志创建环境所使用的明确规范。该功能刚刚发布,因此您需要Conda 4.7.12或更高版本。
conda env export --from-history > environment.yaml
这将生成一个YAML,该YAML仅包含环境历史记录中明确请求的软件包,例如,如果您的历史记录...
conda create -n foo python=3.7 numpy
conda install -n foo pandas scikit-learn
然后conda env export -n foo --from-history
的结果将类似于
name: foo
channels:
- defaults
dependencies:
- python=3.7
- numpy
- pandas
- scikit-learn
prefix: /your/conda/dir/envs/foo
通过这种方式,您可以省去可能与平台相关的所有其他依赖项。
我注意到,如果您曾经在环境中使用--update-deps
标志,则会将每个依赖项添加为明确的规范。这是很不幸的。如果是这种情况,我建议您使用合法的规范重新创建环境,并在以后避免使用该标志。通过your command history搜索可能会在编译该合法规格列表时很有用。