Comment pourrais-je faire mon setup.py
pré-supprimer et post-supprimer le répertoire de construction?
Pour la pré-suppression, supprimez-la simplement avec distutils.dir_util.remove_tree
avant d'appeler le programme d'installation.
Pour la post-suppression, je suppose que vous ne souhaitez post-supprimer qu'après les commandes sélectionnées. Sous-classe la commande respective, remplacez sa méthode d'exécution (pour appeler remove_tree après avoir appelé l'exécution de base) et passez la nouvelle commande dans le dictionnaire cmdclass de l'installation.
this y répond-il? IIRC, vous devrez utiliser le --all
drapeau pour se débarrasser de choses en dehors de build/lib
:
python setup.py clean --all
Cela efface le répertoire de construction avant l'installation
python setup.py clean --all install
Mais selon vos besoins: cela le fera avant et après
python setup.py clean --all install clean --all
Voici une réponse qui combine l'approche programmatique de la réponse de Martin avec la fonctionnalité de la réponse de Matt (un clean
qui prend en charge toutes les zones de construction possibles):
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}
)