I've added a custom distutils command to a setup.py script:
from distutils.command.build_py import build_py
cmdclass = {}
cmdclass['build_qt'] = BuildQt
cmdclass['build_py'] = build_py
setup(..., cmdclass=cmdclass, ...)
Is there a way to make it so that when running::
python setup.py build
this first calls
python setup.py build_qt
automatically?
You can override build
:
from distutils.command.build import build
class my_build(build):
def run(self):
self.run_command("build_qt")
build.run(self)
cmdclass['build'] = my_build
In order to add your own command, you can subclass the default build
-command and extend its subcommands:
class _build(build):
sub_commands = [('build_qt', None)] + build.sub_commands
...
setup(..., cmdclass={'build': _build, ...})
Documentation (distutils.cmd.Command):
# 'sub_commands' formalizes the notion of a "family" of commands,
# eg. "install" as the parent with sub-commands "install_lib",
# "install_headers", etc. The parent of a family of commands
# defines 'sub_commands' as a class attribute; it's a list of
# (command_name : string, predicate : unbound_method | string | None)
# tuples, where 'predicate' is a method of the parent command that
# determines whether the corresponding command is applicable in the
# current situation. (Eg. we "install_headers" is only applicable if
# we have any C header files to install.) If 'predicate' is None,
# that command is always applicable.
#
# 'sub_commands' is usually defined at the *end* of a class, because
# predicates can be unbound methods, so they must already have been
# defined. The canonical example is the "install" command.
sub_commands = []
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With