[Distutils] Optional C extensions in packages

Jim Fulton jim at zope.com
Thu Feb 1 13:11:16 CET 2007

Phillip J. Eby wrote:
> I'm thinking setuptools should allow you to specify that one or more C 
> extensions in a project are optional.
> At minimum, there would then be a command-line option you could give to 
> easy_install to say, "don't build any optional extensions", so if you don't 
> have a compiler or need a cross-platform egg, you can skip those extensions.
> There would also need to be a way to specify this when using the regular 
> build commands.
> This feature would address projects that include optional C versions of 
> certain code, that can fall back to pure Python implementations.
> It would not address projects that have C extensions requiring external 
> libraries that might or might not exist.  (Such as Twisted, for instance, 
> but Twisted falls into the category of projects requiring "extreme 
> measures"  to be supported anyway.)
> Comments, anyone?

I like the goal, since most of our extensions are in this category,
however, I have a feeling that this use case might be better served
by packaging the extensions as separate distributions.

Once concern I have is that I think I'd want an egg with the extensions
and the egg without the extensions to have different names, and perhaps
different requirements.  Of course, the names would be different
because an egg with a C extension would be platform dependent and an
egg without would be platform independent.  What if both a
platform-independent egg and a platform-dependent egg were available?
Which would take precedence? I think they have the same precedence now.

I think I'd be +1 if platform-dependent eggs were prefered over
platform-independent ones.


Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org

More information about the Distutils-SIG mailing list