Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

setup.py adding options (aka setup.py --enable-feature )

I'm looking for a way to include some feature in a python (extension) module in installation phase.

In a practical manner:

I have a python library that has 2 implementations of the same function, one internal (slow) and one that depends from an external library (fast, in C).

I want that this library is optional and can be activated at compile/install time using a flag like:

python setup.py install # (it doesn't include the fast library)
python setup.py --enable-fast install

I have to use Distutils, however all solution are well accepted!

like image 843
pygabriel Avatar asked Apr 25 '10 18:04

pygabriel


1 Answers

The docs for distutils include a section on extending the standard functionality. The relevant suggestion seems to be to subclass the relevant classes from the distutils.command.* modules (such as build_py or install) and tell setup to use your new versions (through the cmdclass argument, which is a dictionary mapping commands to classes which are to be used to execute them). See the source of any of the command classes (e.g. the install command) to get a good idea of what one has to do to add a new option.

like image 131
Michał Marczyk Avatar answered Sep 27 '22 17:09

Michał Marczyk