easy_install: #egg taking priority
So, first the setup. We wanted to require PIL for a package. PIL goes by the name "PIL" and "Imaging". Specifically, the file you download is named "Imaging", and the actual package installed is named "PIL". You can install Imaging (as long as you use easy_install -f http://effbot.org/downloads/) , but it doesn't work as a requirement because Imaging itself does not fulfill an Imaging requirement. So, I figured we'd put in a link like this in someplace listed in -f (we have a local set of links we maintain): http://effbot.org/downloads/Imaging-1.1.5.tar.gz#egg=PIL-1.1.5 But, this doesn't work. easy_install pays attention to "Imaging-1.1.5.tar.gz" and ignores the "#egg=..." portion. This seems wrong, since the only reason for #egg to be there is to help easy_install, so it should take priority (or both names could be read, as long as the #egg info isn't thrown away). We worked around this by creating a shortened link with rubyurl.com (irony! tinyurl.com apparently doesn't allow non-browser user agents, and rubyurl was the next thing I could think of), and adding the #egg to that. A little silly and indirect, but a workaround for now. -- Ian Bicking / ianb@colorstudy.com / http://blog.ianbicking.org
At 01:56 PM 5/9/2006 -0500, Ian Bicking wrote:
So, first the setup. We wanted to require PIL for a package. PIL goes by the name "PIL" and "Imaging". Specifically, the file you download is named "Imaging", and the actual package installed is named "PIL". You can install Imaging (as long as you use easy_install -f http://effbot.org/downloads/) , but it doesn't work as a requirement because Imaging itself does not fulfill an Imaging requirement.
Which means the source distribution isn't being produced by the distutils, or at any rate is being renamed for distribution. My suggestion would be to redistribute a copy of the package with the correct filename, or ask the upstream author to do so.
So, I figured we'd put in a link like this in someplace listed in -f (we have a local set of links we maintain): http://effbot.org/downloads/Imaging-1.1.5.tar.gz#egg=PIL-1.1.5
But, this doesn't work.
That's because #egg was added to support SVN source checkouts and standalone .py files only. It's not designed to work on distutils distributions. In particular, using #egg lowers the link precedence so that the link is treated as least-preferable unless you're asking for a source distribution. In other words, if there's a non #egg link that meets your criteria, easy_install will prefer it to an #egg link. In short: don't use #egg for this; it's only for non-distutils formats, like Subversion checkouts and standalone .py files.
easy_install pays attention to "Imaging-1.1.5.tar.gz" and ignores the "#egg=..." portion. This seems wrong, since the only reason for #egg to be there is to help easy_install, so it should take priority (or both names could be read, as long as the #egg info isn't thrown away).
I guess I could add this, but it doesn't make PIL's distribution name any less wrong. Unless the filename is changed, *everybody* will have to use #egg links to work around it. ISTM that this is a case where asking the author to distribute it under the matching package name (or to change its setup() name to "Imaging") would be the best solution. But I'll go ahead and add this feature under the theory that it's better to always have the ability to tag something explicitly.
participants (2)
-
Ian Bicking
-
Phillip J. Eby