如何使用Buildout从源代码安装我的项目?

时间:2011-04-18 13:15:19

标签: python deployment buildout

我想使用Buildout将基于Distribute的项目及其依赖项安装到隔离环境中。我的项目应该直接从源代码树(本地Git存储库)安装,而不是在PyPI中注册。我该如何做到这一点?

修改

感谢M. Pieters,我能够做出决定。我发布了buildout.cfg以供参考:

[buildout]
develop = .
parts = fbt

[fbt]
recipe = z3c.recipe.scripts
eggs = BuildTools

虽然我现在不需要它,但mr.developer的知识肯定会在将来派上用场。

2 个答案:

答案 0 :(得分:12)

您有3个选项,具体取决于您希望构建生成配置的位置以及检查git存储库的选项。

请注意,就Python而言,产生的蛋是完全相同的。开发蛋和“正常”蛋之间的唯一区别是,开发蛋超出了该蛋其他地方的任何版本要求;无论在其他地方找到其他版本的鸡蛋,它都会被使用。

在开发存储库

只需使用develop选项即可。这会产生一个开发蛋,它与普通蛋相同,但没有版本检查,仅此而已。

您的buildout只需要列出当前目录(setup.py所在的目录)作为开发蛋:

[buildout]
develop = .

在不同的位置

您需要能够访问git存储库以创建新的结帐。使用mr.developer拉入您的git存储库并自动将其标记为开发蛋:

[buildout]
extensions = mr.developer
auto-checkout = package.name

[sources]
package.name = git url/to/package.name.git

通过此设置,mr.developer将自动将git存储库签出到src/子目录,并将其添加到buildout develop选项。

使用tarball下载

像github.com这样的地方也提供了一个下载包含存储库当前内容的tarball的选项。您可以使用它来将该tarball作为鸡蛋源加载find-links选项:

[buildout]
find-links = http://github.com/yourname/package.name/tarball/version#egg=package.name-versionnumber
eggs = package.name

Buildout将使用该特定find-links条目查找鸡蛋,前提是它无法在其他地方找到鸡蛋。

答案 1 :(得分:3)

通过使用zc.buildout的 develop 指令或使用mr.developer buildout扩展,您可以轻松地将Buildout与来自存储库的签出结合使用,您可以在其中定义要直接从给定存储库签出的包URL(支持git,svn和其他版本控制系统)。

http://pypi.python.org/pypi/mr.developer