【问题标题】:Buildout ignoring github `find-links` reference忽略 github `find-links` 参考的构建
【发布时间】:2011-07-29 18:39:52
【问题描述】:

我正在尝试从我的 github 帐户中使用特定的、分叉和调整的包进行构建,但它似乎完全忽略了参考,而是选择了标准的 PyPi 模块。

这是我的构建配置:

[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

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

我已经尝试使用 httphttps 来获取链接(因为最近的 github 更改)。该链接是活动的并且可以直接工作,所以我猜这是我的配置。我错过了什么吗?

【问题讨论】:

  • 必须指定每个部分的配方!

标签: python github buildout


【解决方案1】:

如果您只想使用分叉包(并且可能在开发主包的同时在本地重新调整它),我建议您使用惊人的构建扩展 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

【讨论】:

    【解决方案2】:

    确保您的版本号是唯一的;如果您在 find-links URL 中使用与 PyPI 上列出的软件包相同的版本号,setuptools 将很高兴地抓取在 PyPI 上找到的版本号,而不是 find-links 指示的版本号。

    我们使用{company}{counter} 模式进行私有修改,因此与我们的更改一起重新打包的版本1.2.5 变为1.2.5acme1。随后的修订版会更新计数器(acme2acme3 等),直到分叉包版本本身发生变化。可能有必要在 setup.py 中设置它,其他工具可能会查询包本身的版本。

    【讨论】:

    • 谢谢,这个技巧解决了我遇到的类似问题:我试图让 buildout install pycassa 从 github 的 master 分支,但是由于 master 分支的 setup.py 说它是 1.0.7 版,所以 buildout 会从github下载,但安装后找不到“master”作为版本。解决方案是 fork 项目,设置一个新的 {company}{counter} 版本,推送并从 fork 安装。
    • 没有其他方法可以实现这一点吗?也许有自定义食谱?
    • @ErikAllik:为什么您需要以不同的方式实现这一目标?你已经在 fork 包了。
    • @ErikAllik:自定义配方可以暂时设置allow-hosts,但我不确定这是否可行。
    • @JoséL.Patiño:啊,你有一个 git checkout;让mr.developer 管理这些。还有 How do I tell buildout to ignore a binary distribution and build from source instead? 但对于 git 链接,mr.developer 路由为您提供了一个开发彩蛋,它会覆盖任何 PyPI 包。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 2013-12-22
    • 2021-12-06
    相关资源
    最近更新 更多