Buildout 忽略 Github `find-links` 参考

9 投票
2 回答
1570 浏览
提问于 2025-04-16 15:06

我正在尝试让buildout使用我在github上特定的、修改过的包,但它似乎完全忽略了这个引用,而是选择了标准的PyPi模块。

这是我的buildout配置:

[buildout]
parts = foo
find-links = http://github.com/me/themodule/tarball/version#egg=themodule-version
versions = versions
eggs = ...

[versions]
themodule=version

[foo]
eggs =
    ${buildout:eggs}
    themodule

我使用的是最新的zc.buildout,版本是1.5.2,来自pypi。

我尝试过用httphttps这两种链接(因为最近github有了变化)。这个链接是有效的,直接可以打开,所以我猜可能是我的配置有问题。我是不是漏掉了什么?

2 个回答

0

如果你只是想使用你自己修改过的包(同时在开发主包的时候也可以进行一些本地调整),我建议你使用一个非常棒的工具扩展 mr.developer

你可以稍微修改一下你的 buildout.cfg 文件,这样在运行 ./bin/buildout 的时候就可以检出你修改过的扩展。如果你想的话,也可以指定一个特定的版本来检出(可以查看PyPI上的用户指南获取更多细节)。下面是你设置的基本框架:

[buildout]
parts = foo
extensions = mr.developer
auto-checkout = *
eggs = ...

[sources]
themodule = git git@github.com:me/themodule

[foo]
eggs = ${buildout:eggs}
       themodule
5

确保你的版本号是独一无二的;如果你在 find-links 的网址中使用了和 PyPI 上相同的版本号,setuptools 会很高兴地从 PyPI 上抓取那个包,而不是你在 find-links 中指定的那个。

我们使用 {公司名}{计数器} 的格式来处理私有修改,所以一个版本 1.2.5 如果经过我们的修改,就会变成 1.2.5acme1。之后的版本会更新计数器(比如 acme2acme3 等等),直到这个分支包的版本本身发生变化。可能还需要在 setup.py 中设置这个,因为其他工具可能会查询包的版本信息。

撰写回答