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

Reply via email to