如何使用Buildout从源代码安装我的项目?
我想用Buildout来安装我的基于Distribute的项目和它的依赖包,并且希望这些都在一个独立的环境中。我的项目是直接从源代码树(一个本地的Git仓库)安装的,并没有在PyPI上注册。我该怎么做呢?
编辑:
多亏了M. Pieters,我终于搞清楚该怎么做了。我在这里分享我的buildout.cfg
作为参考:
[buildout]
develop = .
parts = fbt
[fbt]
recipe = z3c.recipe.scripts
eggs = BuildTools
虽然我现在不需要,但了解mr.developer在将来肯定会派上用场。
2 个回答
你可以很方便地使用Buildout来从代码库中获取代码,方法有两种:一种是使用zc.buildout的develop指令,另一种是使用mr.developer这个Buildout扩展。在这里,你可以直接从指定的代码库网址获取包(支持git、svn等版本控制系统)。
详情请查看
你有三种选择,这取决于你希望把构建配置放在哪里,以及你能否访问你的 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。