I've created a C extension that I'd like to enable in my Python package (using setuptools) only if a command line option is passed in. What is the easiest way to do this?
I can't seem to find any straightforward ways of going about this.
Any code that you write using any compiled language like C, C++, or Java can be integrated or imported into another Python script. This code is considered as an "extension." A Python extension module is nothing more than a normal C library. On Unix machines, these libraries usually end in . so (for shared object).
There's actually a distribute/setuptools feature called "Features" that can be used for this.
It's explicitly designed to have setup.py do different things based on --with-xxx
and --without-xxx
command line options.
ext_modules = []
if '--add-this' in sys.argv:
ext_modules.append(Extension(...))
sys.argv.remove('--add-this')
setup(...
ext_modules = ext_modules
)
This is hacky, but might be easiest. A more advanced approach would be to extend the Distribution class to support a flag, say --with-modules
and then customize ext_modules inside finalize_options.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With