1

我想知道是否有一种方法可以在查看 pypi.python.org/ 之前指定首先从哪里获取鸡蛋

例如 :

[buildout]
find-links:
    /home/eggs/

eggs =
    foo
    bar

如果pypi 上存在版本号高于我的名为位于foo的包的包,则 buildout 将尝试从 pypi 下载包。我和 pypi完全不同,这是一个问题。barfoo/home/eggs/foofoo

我找不到使用命名空间或类似东西的方法,所以我想应该有一种方法可以强制构建使用某些包而不是其他包。

知道如何解决这个问题吗?

干杯,马丁

4

1 回答 1

4

您应该将鸡蛋固定到特定版本,这样您就可以控制每次运行构建时使用的鸡蛋:

[buildout]
versions = versions

[versions]
foo = 1.0
bar = 1.1
spam = 1.0b2

该部分versions中的选项[buildout]允许您命名一个包含您的包的版本引脚的部分。在本例中,我将该部分命名为[versions],但您可以使用任何您喜欢的名称;想象一下,如果您将一个[release1][release2]部分,versions指向任一选项以选择版本引脚的特定组合。

当一个鸡蛋像这样固定到一个特定的版本时,只有那个版本的鸡蛋才能满足这个构建的要求。如果您的查找链接指向包含该版本的位置,则将从那里下载 egg,而不是从 PyPI。

还有 2 个额外的功能可以帮助管理版本引脚。第一个是默认的构建选项,称为allow-picked-versions

[buildout]
allow-picked-versions = false

默认设置true意味着 buildout 可以为您选择一个满足所有要求的版本。当您将此设置为 时false,对于任何没有版本引脚构建的鸡蛋都会引发错误。使用它来检测您是否仍然需要固定鸡蛋。

另一种选择是使用buildout.dumppickedversions扩展来构建:

[buildout]
extensions = buildout.dumppickedversions

当像这样添加到您的构建时,每次运行构建时,最后都会列出所选版本的列表,对于任何未固定的鸡蛋,其格式直接适合包含在您的构建配置中。这样,您可以让 buildout 找出要使用的鸡蛋,然后将它们固定到这些版本。

于 2011-02-02T08:59:26.053 回答