Python 使用conda build进行依赖关系管理--如何消除冗余和重复?

Python 使用conda build进行依赖关系管理--如何消除冗余和重复?,python,conda,Python,Conda,我有一个基于conda的项目,它包含一个列出项目依赖项的environment.yml文件。我还想用这个项目来构建一个conda包。为此,我创建了另一个文件,meta.yaml,该文件还需要列出依赖项 此外,在meta.yaml中,可以为构建、运行和测试指定单独的依赖项 我的问题是: meta.yaml中的生成依赖项和运行依赖项之间有什么区别 在environment.yml中列出的包(名称和版本)和meta.yaml中列出的包(名称和版本)之间是否有同步方法 构建依赖项是构建项目所需的依赖项

我有一个基于conda的项目,它包含一个列出项目依赖项的
environment.yml
文件。我还想用这个项目来构建一个conda包。为此,我创建了另一个文件,
meta.yaml
,该文件还需要列出依赖项

此外,在
meta.yaml
中,可以为构建、运行和测试指定单独的依赖项

我的问题是:

  • meta.yaml
    中的生成依赖项和运行依赖项之间有什么区别

  • environment.yml
    中列出的包(名称和版本)和
    meta.yaml
    中列出的包(名称和版本)之间是否有同步方法


构建依赖项是构建项目所需的依赖项,而运行依赖项是安装包后运行包所需的依赖项。例如,您可能需要一个C编译器在包中构建一个C扩展,然后需要一个(兼容的)C库来运行包。或者,如果您有一个纯Python包,那么您的构建依赖项可能是Python和setuptools,而您的运行依赖项将是从包中导入的任何其他包。请参阅以获取更多信息,并注意还有一个测试需求部分,您可以在其中放置仅测试包所需的依赖项


据我所知,无法在
environment.yml
meta.yml
文件之间自动“复制”包。可以想象,您可以通过某种方式编写脚本来实现这一点(可能使用运行conda build的Makefile),但这似乎相当复杂,至少与来回手动复制依赖项一样容易失败。此外,
environment.yml
文件中的包可能只是运行依赖项,或者可能是构建和运行依赖项的混合,在这种情况下,您必须手动管理meta.yaml中的依赖项。

如果没有指定测试要求,我正确阅读了文档,然后,假设运行依赖关系不完全。。。测试部分中指定的依赖项是附加的依赖项,除了运行部分中的依赖项。是的,这就是我的意思。