我的项目应该在跨平台环境(Mac,Win,Linux)上运行。我已经创建了一个conda环境来管理我们的依赖项,以便于设置。我想确保每个想要更新enn的人都可以这样做,但是当我尝试将env从linux导出到yml文件时,它无法在Win或Mac上正确安装,反之亦然。
我已经试着做一些常规的事情了:
conda env create --name -f env.yml
以上都不能给我正确的答案。我附带的一些教程可能会有所帮助,但我没有成功地正确实现它们,并且它们没有包含正确完成教程的一些重要信息。
例如:关于3/4 -它没有解释如何创建应该构造环境的yml文件。
我了解到conda应该在跨平台环境下工作。如果有人能帮我那就太好了。
发布于 2019-09-20 00:55:43
Conda环境本身并不是跨平台的
抱歉,但你所要求的根本不是什么东西。Conda可以将环境的包信息序列化为YAML (重复性很好),但它不能保证它将是跨平台的。事实上,许多包,特别是那些包含非Python代码的包,需要不同的底层构建工具作为依赖项,因此您所要求的永远不会得到满足。
仅限显式规格
这些天你能得到的最接近的结果就是使用--from-history标志限制你的environment.yaml只包含在创建你的环境时使用的显式规范。此功能需要Conda v4.7.12或更高版本。
conda env export --from-history > environment.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标志,它会将每个依赖项添加到显式规范中。这是相当不幸的。如果是这样的话,我建议您使用合法的规范重新创建env,并在将来避免使用该标志。通过your command history进行搜索在编译合法规范列表时可能很有用。
https://stackoverflow.com/questions/58009732
复制相似问题