2010-10-30 4 views

Antwort

3
ext_modules = [] 
if '--add-this' in sys.argv: 
    ext_modules.append(Extension(...)) 
    sys.argv.remove('--add-this') 
setup(... 
     ext_modules = ext_modules 
) 

Dies ist hacky, könnte aber am einfachsten sein. Ein fortgeschrittenerer Ansatz wäre es, die Distribution-Klasse zu erweitern, um ein Flag zu unterstützen, etwa --with-modules, und dann ext_modules in finalize_options anzupassen.

14

Es gibt tatsächlich eine distribute/setuptools-Funktion namens "Features", die dafür verwendet werden kann. Es ist ausdrücklich darauf ausgelegt, dass setup.py verschiedene Dinge basierend auf den Befehlszeilenoptionen --with-xxx und --without-xxx ausführt.

  • Diese blog post eine schöne Einführung gibt, kann ich keine bessere Dokumentation zu dieser Zeit findet (neben der Quelle verteilen - the Feature class und features keyword).
  • Das Jinja-Projekt setup.py verwendet Features für Ihren genauen Zweck, es könnte eine gute Vorlage sein, um zu arbeiten.
  • Der Simplejson setup.py tut auch etwas Ähnliches, außer dass es codiert ist, immer zu versuchen, das C-Erweiterung-Feature zu erstellen, das es definiert, und auf Python zurückfallen, wenn Gebäude fehlschlägt; Dies kann auch für Ihren Zweck nützlich sein.
Verwandte Themen