I moduli di estensione vengono specificati utilizzando l'opzione ext_modules. package_dir non ha effetto su quale estensione di file sorgente venga trovata; interessa solo il sorgente per i moduli in puro Python. Il caso più semplice, un singolo modulo di estensione in un singolo file sorgente C, è:
<root>/
        setup.py
        foo.c
from distutils.core import setup
setup(name='foobar',
      version='1.0',
      ext_modules=[Extension('foo', ['foo.c'])],
      )
Con esattamente lo stesso schema d'albero del sorgente, questa estensione può essere inserita nel package foopkg semplicemente cambiando il nome dell'estensione:
from distutils.core import setup
setup(name='foobar',
      version='1.0',
      ext_modules=[Extension('foopkg.foo', ['foo.c'])],
      )
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.