I have written a Python module, and I have two versions: a pure Python implementation and a C extension. I've written the __init__.py
file so that it tries to import the C extension, and if that fails, it imports the pure Python code (is that reasonable?).
Now, I'd like to know what is the best way to distribute this module (e.g. write setup.py
) so it can be easily used by people with or without the facility to build, or use, the C extension, just by running:
python setup.py install
My experience is limited, but I see two possible cases:
- User does not have MS Visual Studio, or the GCC compiler suite, installed on their machine, to build the C extension
- User is running IronPython, Jython, or anything other than CPython. I only have used CPython. So I'm not sure how I could distribute this module so that it would work smoothly and be easy to install on those platforms, if they're unable to use the C extension.