[Distutils] Are there best practices on creating/using egg extras?

Phillip J. Eby pje at telecommunity.com
Fri Jul 20 21:58:09 CEST 2007


At 01:50 PM 7/20/2007 -0500, Dave Peterson wrote:
>Hello,
>
>I'm not sure if I've painted Enthought into a corner or not, but I can't
>figure out if there is a way to help users of a library, delivered as an
>egg, to know and/or maintain dependencies on extras declared in that
>egg.  By which I mean that if my library, called X, declares extras 1,
>2, and 3, and the source for X includes all the code that implements the
>features in extras 1, 2, and 3, and the extras document the external
>dependencies component X has to get those extras to work, how does
>someone importing from the API in X know whether their dependency on it
>should be 'X', 'X[1]', X[1,2]', etc. ?   After all, all the API methods
>are already there even if they didn't install the extras.   So far the
>only mechanisms I can see are (a) a manual one which depends on people
>(everyone using X!) knowing the internals of X such that they can tell
>that if they import symbols a, b, or c, then that means they need extra
>1, etc., and (b) trial and error iteration driven by unit / integration
>tests.
>
>Am I just misusing or misunderstanding extras here?

Note that if you have code that imports from your extras, you can 
always include:

    pkg_resources.require("X[1]")

right before the imports.  Then, instead of an obscure import error, 
users will get an obscure DistributionNotFound error that at least 
tells them one of the packages they'll need to install.  ;-)



More information about the Distutils-SIG mailing list