How to extend distutils with a simple post install script?

blokkie picture blokkie · Aug 24, 2009 · Viewed 12.6k times · Source

I need to run a simple script after the modules and programs have been installed. I'm having a little trouble finding straight-forward documentation on how to do this. It looks like I need to inherit from distutils.command.install, override some methods and add this object to the setup script. The specifics are a bit hazy though and it seems like a lot of effort for such a simple hook. Does anyone know an easy way to do this?

Answer

user79758 picture user79758 · Aug 24, 2009

I dug through distutils source for a day to learn enough about it to make a bunch of custom commands. It's not pretty, but it does work.

import distutils.core
from distutils.command.install import install
...
class my_install(install):
    def run(self):
        install.run(self)
        # Custom stuff here
        # distutils.command.install actually has some nice helper methods
        # and interfaces. I strongly suggest reading the docstrings.
...
distutils.core.setup(..., cmdclass=dict(install=my_install), ...)