Build 在跨平台环境中管理conda env

Build 在跨平台环境中管理conda env,build,export,cross-platform,conda,environment,Build,Export,Cross Platform,Conda,Environment,我的项目应该在跨平台环境(Mac、Win、Linux)上运行。 我已经创建了一个conda env,它可以管理我们的依赖项,以便于安装。 我想确保每个想更新enn的人都能做到这一点,但是当我试图将env从linux导出到yml文件时,它无法在Win或Mac上正确安装,反之亦然 我已经试过做一些常规的事情: 一,。 康达环境导出>环境yml conda env create--name-f env.yml 二,。 conda环境导出--无构建>env.yml 三,。 四,。 五,。 以上任何

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

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

一,。 康达环境导出>环境yml
conda env create--name-f env.yml

二,。 conda环境导出--无构建>env.yml

三,。

四,。

五,。

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

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

我知道康达应该在跨平台环境中工作。。。 如果有人能帮我,那就太好了。

Conda Envs并不是天生的跨平台产品 对不起,你要的根本不是什么。Conda可以将一个环境的包信息序列化为YAML(非常有利于再现性),但不能保证它是跨平台的。事实上,许多软件包,尤其是带有非Python代码的软件包,需要不同的底层构建工具作为依赖项,因此您所要求的永远不会得到满足

仅显式规范 这些天你能得到的最接近的方法是限制你的
环境。yaml
只包括通过使用
--from history
标志来创建你的环境的显式规范。此功能需要Conda v4.7.12或更高版本

conda env导出--来自历史>environment.yaml
这将生成一个YAML,该YAML仅包含在env历史记录中明确请求的包,例如,如果您的历史记录

conda create-n foo python=3.7 numpy
康达安装-n foo-kit学习
然后,
conda env export-n foo--from history
的结果如下

名称:foo
频道:
-默认值
依赖项:
-python=3.7
-努比
-熊猫
-scikit学习
前缀:/your/conda/dir/envs/foo
这样,您就可以省去所有其他可能是特定于平台的依赖项


我还看到很多包裹?!
我注意到,如果在一个env中使用
--update deps
标志,它会将每个依赖项都添加到显式规范中。这是非常不幸的。如果是这种情况,我建议使用您的合法规范重新创建env,并在将来避免使用该标志。搜索可能有助于编译合法规范列表。

您所说的“无法在Win或Mac上正确安装”是什么意思?某些依赖项在windows上不可用?这些库可能在Win或Mac上没有安装包。。。但我不在乎那件事。。我想,当我生成yml文件时,它会自动将可以安装在mac win上的软件包放进去。。。现在我正在手动操作,我认为应该有更好的方法。此外,有些软件包在win或mac上有安装版本,但conda没有对其进行正确管理。我不认为将envs导出到yml应该以这种方式工作,而是导出并重新创建一个精确的环境。另外,在三个平台上使用“相同”的env会让人非常困惑,但实际上它们并不相同。我还尝试使用conda devenv为每个平台生成不同的yml,但效果并不理想。根据anaconda的原则,它很容易安装在跨平台环境中,但我看不到这种情况发生。这是否回答了您的问题<代码>--从历史记录中看似乎已被弃用,不再有效。@rjurney您在哪里看到的?我在代码库或问题中看不到这方面的证据。这只发生在OSX上,尽管使用相同的conda环境,但它在OSX上不可用。这种方法的问题是,如果多人添加库或您从另一台机器添加库,则该库文件将丢失。@rjurney请归档,并确保包含他们请求的文档(例如,问题环境的
conda list
输出)。如果你标记我(@mfansler),我会看一看。@merv是的,但它不包括软件包版本,这就是我要找的。在软件包版本中具有“来自历史记录”功能。