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.