我有一个基于conda的项目,其中包含一个列出项目依赖项的environment.yml
文件。我也想使用这个项目来构建一个conda包。为此,我创建了另一个文件meta.yaml
,它还需要列出依赖项。
此外,在meta.yaml
中,可以为构建,运行和测试指定单独的依赖项。
我的问题是:
meta.yaml
中的构建和运行依赖项之间有什么区别?
有没有办法在environment.yml
中列出的包(名称和版本)与meta.yaml
中列出的包之间进行同步?
答案 0 :(得分:1)
构建依赖项是构建项目所需的依赖项,而运行依赖项是安装后运行程序包所需的依赖项。例如,您可能需要C编译器在包中构建C扩展,然后您需要(兼容的)C库来运行包。或者,如果您有一个纯Python包,那么您的构建依赖项可能是Python和setuptools,而您的运行依赖项将是您从包中导入的任何其他包。有关详细信息,请参阅the documentation,并注意还有一个测试要求部分,您可以在其中放置仅用于测试程序包所需的依赖项。
据我所知,没有办法自动复制" environment.yml
和meta.yml
文件之间的包。你可以想象一下编写某种方式来编写脚本(也许使用一个运行conda build的Makefile),但这看起来非常复杂,并且至少像手动复制依赖关系一样容易出错。此外,environment.yml
文件中的包可能只是运行依赖项,或者可能是构建和运行依赖项的混合,在这种情况下,您必须手动管理元中的依赖项.yaml反正。