At 08:38 PM 8/14/2005 -0500, Ian Bicking wrote:
easy_install doesn't work automatically with elementtree, because its download link leads to an interstitial HTML page. So I thought I'd add the proper link to an index I'm keeping: http://effbot.org/downloads/elementtree-1.2.6-20050316.zip
But easy_install ignores it. It looks fine to me?
Heck if I know. I tried:
easy_install.py -vnfhttp://effbot.org/downloads/elementtree-1.2.6-20050316.zip elementtree
and it worked just fine. Got the url of a page I could use to test? Perhaps it's something in the surrounding HTML that's at issue.
Also, if I want to require a package that isn't locatable through PyPI, how should I deal with that? I can add a find_links value to setup.cfg, then put the link there. It'd be easier if I could put a URL to the package somewhere. Or I guess if I could have a sort of local index. But if I put "./docs/packages.html" as a find_links value, easy_install can't find that. So, what's the best way to deal with that? I'm okay with the index page myself, but I think other people may not want to maintain such a thing.
You can just put all the links directly in the --find-links value, you know. EasyInstall doesn't install links that it can tell are distributions.
(I'm thinking of writing a little app to create a index for broken PyPI entries, but that's another topic.)
Make sure you add an option to send the owner of the broken entry an email every time you have to update your index. :)
And lastly on this topic, what should I do when it's likely a package will be installed without setuptools/easy_install? For something like ElementTree there are lots of packages (RPM, deb, etc) that install the package; I can't really ask people to uninstall those and install the egg version.
I'm still looking at adding a feature to allow projects to support detecting "legacy" installations of packages. There are still a few design kinks I want to figure out, so it probably won't be in 0.6a1 I'm afraid.
The basic idea is going to be that you should be able to add dummy Distribution objects to the global working_set to represent legacy installations. But the devil is still in the details, mostly surrounding what the API should look like and how you get this stuff into a package. For example, if you depend on ElementTree, there should be a way for you to include a code snippet that checks for its presence and makes the dummy Distribution. But, you shouldn't have to code to the raw pkg_resources API to do that; instead, some helper functions are needed so that the part you write can be just a single API call for common cases (like importing a version from some module and checking what version it is).