Hook to add commands to distutils build?

后端 未结 2 1122
悲&欢浪女
悲&欢浪女 2020-12-09 18:13

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
         


        
相关标签:
2条回答
  • 2020-12-09 18:41

    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
    
    0 讨论(0)
  • 2020-12-09 19:03

    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 = []
    
    0 讨论(0)
提交回复
热议问题