[Distutils] setuptools: including shared libraries the Right Way

Phillip J. Eby pje at telecommunity.com
Fri Feb 9 19:02:48 CET 2007

At 09:34 AM 2/9/2007 -0800, Andrew Straw wrote:
>I'm trying to include shared libraries (built by scons invoked from my
>setup.py script) into built eggs. I can do this just fine with the
>package_data command, but then the egg isn't known to be platform
>dependent. This is somewhat puzzling, because setuptools notices the
>library and lists it in .egg-info/native_libs.txt. Perhaps this is
>expected behavior because, in theory, I could include pre-built native
>libraries of more than one platform, or the native libraries might only
>be required on one platform.
>This leads me to the bdist_egg --plat-name option, which doesn't seem to
>work in this case. "python setup.py bdist_egg --plat-name=abc" doesn't
>produce an .egg with "abc" in the filename. This is apparently because
>setuptools thinks the egg doesn't contain C extensions.

More precisely, it's distutils, which setuptools asks to find out if there 
are any.   Unfortunately, at the time setuptools needs to know this, it 
hasn't checked for native libraries yet, because that's an egg-building thing.

>Perhaps the solution to this issue is to tell setuptools "yes, I did
>build C extensions". How would I achieve this?

A quick workaround:

from setuptools.dist import Distribution

class MyDist(Distribution):
     def has_ext_modules(self):
         return True

     distclass = MyDist,

More information about the Distutils-SIG mailing list