On Sat, 3 Dec 2005, Phillip J. Eby wrote: [...]
Well, there isn't really a way to do 1-of-N dependencies,
since you would need a way for the user to pick one to be satisfied by easy_install.
That's not a "since", that's an "and" :-)
I know where you're coming from though, of course: no need to explain further.
It seems like the straightforward thing to do is treat it as an optional ("extras") dependency, and have the user install matplotlib[Numeric] or matplotlib[numarray] accordingly.
How about setup.py authors having some means of defining a default dependency, where there is an choice of dependencies? In my case, and I guess for Scipy too (presumably they want people to use scipy_core, all else being equal), there's an obvious 'recommended choice'. That recommended choice may vary with time, but ISTM the users often split fairly neatly into two groups:
1. People who just want to say 'give me the standard setup, whatever is currently recommended'
2. People who know just what they want
It also seems to me that #1 is most often the bigger group. Those people then need to read install instructions specific to the particular package they're installing. It may be that the choice of dependencies isn't terribly significant for most users, but they're forced to know about it regardless in the current state of affairs.
FWIW, the particular P, B, and C I had in mind are (C is not a current dependency of P, but may or may not an alternative to B be in future):
P: mechanize B: pullparser C: BeautifulSoup