You should pin your eggs to specific versions, that way you can control what eggs are used every single time you run the buildout:
[buildout]
versions = versions
[versions]
foo = 1.0
bar = 1.1
spam = 1.0b2
The versions
option in the [buildout]
section lets you name a section that contains version pins for your packages. In this example I named that section [versions]
, but you can use any name you like; imagine if you will a [release1]
and [release2]
section, with the versions
option pointing to either one to select a specific combination of version pins.
When an egg is pinned to a specific version like this, only that version of the egg can satisfy the requirements of this buildout. If your find-links points to a location that contains that version then the egg will be downloaded from there and not from PyPI.
There are 2 more buildout features that can help manage version pins. The first is a default buildout option called allow-picked-versions
:
[buildout]
allow-picked-versions = false
The default setting is true
which means buildout can pick a version for you that otherwise satisfies all the requirements. When you set this to false
, for any egg that has no version pin buildout will throw an error. Use this to detect that you need to pin down eggs still.
The other option would be to use the buildout.dumppickedversions extension to buildout:
[buildout]
extensions = buildout.dumppickedversions
When added to your buildout like that, every time you run your buildout a list of picked versions is listed at the end, for any egg that wasn't pinned, in a format directly suitable for inclusion in your buildout configuration. That way you can let buildout find out what eggs to use, then pin them down to those versions.