[Distutils] Splitting large packages into multiple eggs

Bob Ippolito bob at redivi.com
Mon Dec 12 05:23:30 CET 2005


On Dec 11, 2005, at 7:55 PM, Robert Kern wrote:

> Bob Ippolito wrote:
>
>> The issue at hand is how to structure the setup.py to support
>> creation of multiple eggs, with an egg for installation purposes that
>> depends on everything.  PyObjC can be broken up into about 30 eggs,
>> one for each package, one for the Xcode support (which depends on
>> py2app and altgraph), one for all of the tests (or maybe separate
>> eggs for each test suite).  Obviously I'm not looking to create 30+
>> setup.py files, so what do I do?
>
> You may want to look at how the new scipy.distutils scheme works.  
> We have a
> utility class Configuration which encapsulates everything about the  
> setup.
> Eventually, it creates the **kwds for setup() from that  
> information. The
> important bits of our main setup.py looks something like this:

That's interesting, but it's not relevant...  The point is that there  
needs to be separate setup.py files because we're making separate  
eggs.  I'm making separate eggs for packaging reasons.  Basically:

- there's 3.4M of tests for the core
- a handful of the packages aren't compatible with some supported  
platforms
- the Xcode support depends on a whole slew of other packages you  
don't otherwise want.

This was traditionally not a problem because there was no dependency  
management, plus py2app simply included whatever it detected was used  
on a per-module level.  For the next release of py2app I'm going to  
make it wholly include any egg that is used, which would be very bad  
for PyObjC if it were a single egg.

-bob



More information about the Distutils-SIG mailing list