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

7 投票
2 回答
4225 浏览
提问于 2025-04-16 15:57

我想用Buildout来安装我的基于Distribute的项目和它的依赖包,并且希望这些都在一个独立的环境中。我的项目是直接从源代码树(一个本地的Git仓库)安装的,并没有在PyPI上注册。我该怎么做呢?

编辑:

多亏了M. Pieters,我终于搞清楚该怎么做了。我在这里分享我的buildout.cfg作为参考:

[buildout]
develop = .
parts = fbt

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

虽然我现在不需要,但了解mr.developer在将来肯定会派上用场。

2 个回答

3

你可以很方便地使用Buildout来从代码库中获取代码,方法有两种:一种是使用zc.buildout的develop指令,另一种是使用mr.developer这个Buildout扩展。在这里,你可以直接从指定的代码库网址获取包(支持git、svn等版本控制系统)。

详情请查看

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

12

你有三种选择,这取决于你希望把构建配置放在哪里,以及你能否访问你的 git 仓库。

需要注意的是,从 Python 的角度来看,最终生成的 egg 是完全一样的。开发用的 egg 和“正常”的 egg 之间唯一的区别是,开发用的 egg 会覆盖其他地方对这个 egg 的版本要求;无论其他地方找到了什么版本的 egg,它都会被使用。

在开发仓库内部

只需使用 develop 选项。这会创建一个开发用的 egg,它和正常的 egg 一样,只是没有版本检查,仅此而已。

你的构建配置只需要把当前目录(也就是 setup.py 所在的地方)列为开发用的 egg:

[buildout]
develop = .

在不同的位置

你需要能够访问 git 仓库,这样才能创建一个新的检出。使用 mr.developer 来拉取你的 git 仓库,并自动将其标记为开发用的 egg:

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

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

通过这种设置,mr.developer 会自动把 git 仓库检出到 src/ 子目录,并将其添加到构建配置的 develop 选项中。

使用 tarball 下载

像 github.com 这样的地方也提供下载当前仓库内容的 tarball 的选项。你可以使用这个 tarball 作为 egg 的来源,配合 find-links 选项:

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

然后,构建配置会使用这个特定的 find-links 条目来查找 egg,前提是它在其他地方找不到这个 egg。

撰写回答