Question

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

Was it helpful?

Solution

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.

OTHER TIPS

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

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

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}
    )
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top