[Distutils] setuptools: extras_require

Ian Bicking ianb at colorstudy.com
Wed Jul 13 20:02:39 CEST 2005

Phillip J. Eby wrote:
>>   Or, more specifically, there's a bunch of examples distributed in the
>> Paste source distribution; these examples require lots of extra
>> software, even if Paste doesn't.  How can I easily get all the examples
>> working?
> Define an "examples" extra, then use:
>     easy_install Paste[examples]
> Note, by the way, that if the examples need the HTTP extra, then you can 
> specify that like this:
>      setup(
>          ...
>          extras_require = dict(
>              HTTP = ['WSGIUtils'],
>              examples = ['Paste[HTTP]', ...other stuff here...],
>          )
>      )
> That is, it's okay to have cyclical dependencies; the dependency 
> resolution mechanism is smart enough to figure out what to do.

Cool... now I'm thinking about how I should distribute the examples. 
They are already part of the source distribution (i.e., in the MANIFEST 
but not the packages).  They aren't a package at all, really, more like 
data (even the .py files).

I'm not sure what I should be shooting for.  This is okay:

   easy_install.py Paste[HTTP,examples]

But this doesn't actually install the examples themselves, just the 
prerequisites for them.  I can't figure out how example installation 
would work, since examples really aren't installed globally in any way, 
and shouldn't be eggified.

The examples could be separated into a separate package, but I don't 
think that would help.

If easy_install.py had a develop option that would do it.  Like:

   easy_install.py Paste[HTTP,examples]
   easy_install.py --develop Paste

Where --develop downloads the package (not the egg), and does "setup.py 
develop" or something.  Maybe, kind of -- at least, you'd end up with 
the entire Paste source package, but the prereqs would be installed 
normally.  And I guess if you didn't run the first command, all the 
prereqs would be installed in development?  I don't know.  The same 
issues perhaps apply to documentation (though personally documentation 
matters much less to me, since it can be published directly to the web).

Ian Bicking  /  ianb at colorstudy.com  /  http://blog.ianbicking.org

More information about the Distutils-SIG mailing list