何时使用buildout:eggs,何时通过zc.recipe.egg安装?

5 投票
1 回答
1248 浏览
提问于 2025-04-15 22:01

看起来有不止一种方法可以把“蛋”安装到构建环境中。

方法一:

[buildout]
...
eggs = 
     eggname
     othereggname
...

方法二:

[buildout]
...
parts = eggs

[eggs]
recipe = zc.recipe.egg
eggs = eggname
     = othereggname

这两种方法都可以用。(方法二的变体是把每个需求作为一个单独的部分来安装。)

这两种方法有什么区别呢?

在我的项目中,我使用的是带有djangorecipe和mr.developer的buildout。

1 个回答

2

在这两种情况下,"eggs=" 让这些包可以在那个部分使用,也就是说它们会被安装。

构建时的包不会有额外的处理。

最大的不同在于 "recipe = zc.recipe.egg" 还会尝试为所有在那里的包创建脚本。(这里的脚本是指“console_scripts”入口点,而不是旧的distutils中的“scripts=”)

我通常的工作方式是:在 [buildout] 中列出我最重要的包(比如“myproject”)。在 djangorecipe 部分,我基本上是写了 "eggs = ${buildout:eggs}"。

还有一个 [console_scripts] 部分,使用 zc.recipe.egg 这个配方,明确表示我想从那些包中生成控制台脚本。我会把像 pep8 这样的额外工具放在里面。

撰写回答