Cleaning build directory in setup.py

Question:

How could I make my setup.py pre-delete and post-delete the build directory?

Asked By: Ram Rachum

||

Answers:

Does this answer it? IIRC, you’ll need to use the --all flag to get rid of stuff outside of build/lib:

python setup.py clean --all
Answered By: Matt Ball

For pre-deletion, just delete it with distutils.dir_util.remove_tree before calling setup.

For post-delete, I assume you only want to post-delete after selected commands. Subclass the respective command, override its run method (to invoke remove_tree after calling the base run), and pass the new command into the cmdclass dictionary of setup.

Answered By: Martin v. Löwis

Here’s an answer that combines the programmatic approach of Martin’s answer with the functionality of Matt’s answer (a clean that takes care of all possible build areas):

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}
    )
Answered By: Alan

This clears the build directory before to install

python setup.py clean --all install

But according to your requirements: This will do it before, and after

python setup.py clean --all install clean --all
Answered By: Adrian Lopez
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.