2009-10-20 9 views

Antwort

6

Für Vor-Löschen, löschen Sie einfach mit distutils.dir_util.remove_tree vor Setup aufrufen.

Für post-löschen, nehme ich an, dass Sie nur nach ausgewählten Befehlen post-löschen möchten. Unterklassen Sie den entsprechenden Befehl, überschreiben Sie die run-Methode (um remove_tree nach dem Aufruf des Basislaufs aufzurufen) und übergeben Sie den neuen Befehl in das cmdclass-Wörterbuch von setup.

73

Tut this beantworten Sie es? IIRC, werden Sie die --all Flag verwenden, müssen außerhalb von build/lib Sachen loszuwerden:

python setup.py clean --all 
+0

Es scheint, dass nicht alle 'setup.py' Skripte' clean' unterstützen. Beispiel: NumPy – kevinarpe

3

Hier ist eine Antwort, die den programmatischen Ansatz von Martin Antwort mit der Funktionalität von Matts Antwort kombiniert (a clean dass kümmert sich um alle möglichen Build Bereiche):

from distutils.core import setup 
from distutils.command.clean import clean 
from distutils.command.install import install 

class MyInstall(install): 

    # Calls the default run command, then deletes the build area 
    # (equivalent to "setup clean --all"). 
    def run(self): 
     install.run(self) 
     c = clean(self.distribution) 
     c.all = True 
     c.finalize_options() 
     c.run() 

if __name__ == '__main__': 

    setup(
     name="myname", 
     ... 
     cmdclass={'install': MyInstall} 
    ) 
2

Dieses das Build-Verzeichnis

zu installieren, bevor löscht
python setup.py clean --all install 

Aber nach Ihren Anforderungen: Das es vor tun wird, und nach

python setup.py clean --all install clean --all