Best way to package a Python library that includes a C shared library?
Question: I have written a library whose main functionality is implemented in C (speed
is critical), with a thin Python layer around it to deal with the `ctypes`
nastiness.

I'm coming to package it and I'm wondering how I might best go about this. The
code it must interface with is a shared library. I have a Makefile which
builds the C code and creates the `.so` file, but I don't know how I compile
this via distutils. Should I just call out to `make` with `subprocess` by
overriding the `install` command (if so, is `install` the place for this, or
is `build` more appropriate?)

**Update** : I want to note that this is _not_ a Python extension. That is,
the C library contains no code to itself interact with the Python runtime.
Python is making foreign function calls to a straight C shared library.


Answer: Given that you followed the instructions on how to [create Python extensions
in C](https://docs.python.org/2/extending/extending.html), you should just
enlist the extension modules like in [this
documentation](https://docs.python.org/2/distutils/setupscript.html#describing-
extension-modules).  
So the `setup.py` script of your library should look like this:

    
    
    from distutils.core import setup, Extension
    setup(
       name='your_python_library',
       version='1.0',
       ext_modules=[Extension('your_c_extension', ['your_c_extension.c'])],
    )
    

and `distutils` knows how to compile your extension to C shared library and
moreover where to put it.

_Of course I have no further information about your library, so you probably
want to add more arguments to`setup(...)` call._

