multiple modules from single c extension

Robert Kern robert.kern at gmail.com
Thu Dec 2 11:49:25 EST 2010


On 12/2/10 10:39 AM, Eric Frederich wrote:
> Can you explain how to do this with distutils then?
> Would I need a separate setup.py for SpamABC and SpamXYZ?
> How would I get them included in the parent module Spam?

Please consult the distutils documentation.

   http://docs.python.org/distutils/index.html

In short, you only need one setup.py file.

   from distutils.core import setup, Extension

   setup(
     ...
     ext_modules=[
       Extension('Spam.ABC', sources=['src/spam_abc.c']),
       Extension('Spam.XYZ', sources=['src/spam_xyz.c']),
     ],
     packages=['Spam'],
     ...
   )

> Could you explain what you mean when you say "The Python import
> mechanism will be looking for an appropriately-named .pyd file for
> each module"?
>
> Are you saying that in python when I say from "Spam.ABC import *" I
> need a file called "Spam.ABC.[so|pyd]"?

No, it will be looking for Spam/ABC.pyd where Spam/ is your package directory 
(i.e. it should have an __init__.py file, like any other Python package).

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
  that is made terrible by our own mad attempt to interpret it as though it had
  an underlying truth."
   -- Umberto Eco




More information about the Python-list mailing list