[Distutils] setuptools: package management and explicit version numbers
Ian Bicking
ianb at colorstudy.com
Wed Aug 10 20:00:37 CEST 2005
Has there been any progress on some of the package management tools
people were talking about? I.e., list and delete packages? (At the
moment no other features come to mind, but I'm definitely seeing a
purpose for these functions) Someone said they were going to give it a
go, but I can't remember who.
Another option that I think would be useful is to modify requirements in
a package to make version numbers explicit. So I might have something
in development and it requires a bunch of packages. It just requires
the Most Recent version of those packages; I haven't tested anything but
that, so I don't know if older versions would work, and I can't know if
newer versions will work.
When I get ready to release, I want to be conservative. Which means
that I know that the exact versions I am using work well, but nothing
else; I don't know that past or future versions of the packages I depend
on will work. So I'd like to change my requirements so that they
specify the exact versions I'm using at the time of release.
As I think about it, it sounds pretty easy really. I just find all the
requirements, see what version is installed, and rewrite requires.txt
with those versions. At first I thought it should be a package
management function, but should this be part of setuptools? A new
command, or maybe an option to egg_info? It seems like it fits into
egg_info well. This means requirements should be specified only in
requires.txt, not in setup().
There's some other features I can think of specifically using subversion
together with setuptools, but maybe I'll mull on those a bit longer.
Nothing fancy, but codifying a specific pattern, something like:
easy_install.py -e -b dev package_name
cd dev/package_name
# I would like "in-development" packages to have some specific version
# but I don't know what that version should be...?
sudo python setup.py develop -m
# time passes, development is done, release is ready...
python setup.py svntag 0.5
# changes PKG-INFO with new version, copies trunk to tags/0.5, does an
# svn switch
huh... maybe I can add such a command with an entry point?
--
Ian Bicking / ianb at colorstudy.com / http://blog.ianbicking.org
More information about the Distutils-SIG
mailing list