On 28-02-13 16:39, Mark McLoughlin wrote:
Generally speaking, when a project has a large list of dependencies on
libraries outside of its control, it can take one of two approaches to
those dependencies:
1) specify the minimum required version of each library and assume new
releases of all your dependencies will be backwards compatible with
previous versions.
2) specify exactly what version of each library to use, because you
assume all of your dependencies are constantly changing their APIs
and breaking your app
I use versions in two places:
- In my setup.py I note minimum versions. "xyz >= 1.2". In a rare case,
I can say "<2dev" or so.
- In my buildout configuration (or requirements.txt), I pin versions
exactly.
A bit of extra explanation on the last part: I have one basic set of
version pins (KGS, Known Good Set) that I use in most places, so not
every project needs to keep track of all versions.
Something like http://packages.lizardsystem.nl/kgs/1.30/versions.cfg
The minimum requirements keep your software working and keep yourself
from picking known wrong versions. The version pinning keeps everything
reliable.
(Note that you can get buildout to always print any new versions that it
picked, so it is easy to keep everything up-to-date regarding pins).
Reinout
--
Reinout van Rees http://reinout.vanrees.org/
rein...@vanrees.org http://www.nelen-schuurmans.nl/
"If you're not sure what to do, make something. -- Paul Graham"
_______________________________________________
Distutils-SIG maillist - Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig