[Distutils] easy_install: link detection

Phillip J. Eby pje at telecommunity.com
Mon Aug 15 04:05:39 CEST 2005

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:

-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).

More information about the Distutils-SIG mailing list