[Distutils] Automatically going for a pre-req dev

Phillip J. Eby pje at telecommunity.com
Fri Jan 6 23:48:07 CET 2006


At 01:55 PM 1/6/2006 -0800, Ben Bangert wrote:
>When installing a package that requires the dev version of another
>package, it fails to to and download a dev version of the package.
>This appears to be because it either searches the filesystem for the
>prereq version, or asks CheeseShop.
>
>Given that the prereq indicates it wants a dev version, it would seem
>reasonable to search CheeseShop with ==dev equivalent active.
>
>As an example, if you install:
>easy_install -U hellahella==dev
>
>It installs fine from svn, then goes back searching for Pylons, and
>gets:
>Processing dependencies for hellahella==0.1dev-r576
>Searching for Pylons>=0.1dev-r289
>Reading http://www.python.org/pypi/Pylons/
>Reading http://pylons.groovie.org/
>No local packages or download links found for Pylons>=0.1dev-r289
>error: Could not find distribution for Requirement.parse
>('Pylons>=0.1dev-r289')
>
>Yet, if you run:
>easy_install -U Pylons==dev
>
>It has no problem fetching the latest Pylons and the Paste prereqs
>(which would have the same problem if I hadn't linked to them
>explicitly on the Pylons page).
>
>Since you already indicate you want ==dev, shouldn't it keep that
>during the prereq if necessary?

There is nothing special about 'dev' as a version; it could be 
"Pylons=any_old_version" for all easy_install knows.

What you want is to set your install_requires=['Pylons==dev,>=0.1dev-r289'] 
instead.  This tells easy_install that if it sees a link to a 'dev' 
version, go ahead and install it, but at runtime the distribution will have 
to match the other version, because there is really no "dev" version.

Which is why the trick works, basically.  If you ask for ==dev 
*or* >=0.1dev-r289, the latter will not be found on the Cheeseshop (until 
an 0.1 final is released), but a link to the "dev" version will.  At 
runtime, nothing matches "dev", but it *will* match the 0.1dev.

Anyway, this trick could be played with any special version in place of 
"dev", but that is currently the convention being used by most people 
posting links to SVN versions.  It's the responsibility of the person 
defining the dependencies to say whether they want development versions of 
their requirements.



More information about the Distutils-SIG mailing list