[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:
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).
More information about the Distutils-SIG
mailing list