12

主题是自描述的:我需要对setup.py build命令进行子类化以执行其他构建步骤。但是我找不到任何build可以继承的命令类。我一直在尝试:

class BuildCommandProxy(setuptools.command.build):
    pass

class BuildCommandProxy(distutils.command.build):
    pass

乃至:

class BuildCommandProxy(setuptools.distutils.command.build):
    pass

没有任何成功。

更新:寻找如何setuptools.

UPDATE2:我有一些自定义命令实现:

class CustomCommand(setuptools.Command):
    # ...

我想实现的是将这个命令传递给cmdclass这样的:

cmdclass={
    "build": CustomCommand,
}

然后在执行一些自定义步骤后调用原始build文件CustomCommand.run

4

2 回答 2

13

Setuptools 不会覆盖distutils build命令本身;只有build_pybuild_ext子命令。

因此,要创建自己的子类,您需要从包含一个类(的子类)的distutils.command.build 模块中导入:buildCommand

import distutils.command.build

class BuildCommandProxy(distutils.command.build.build):
    pass
于 2013-02-01T11:08:35.973 回答
3

为了完整起见,这里是如何添加自定义构建操作的完整示例:

import distutils.command.build

# Override build command
class BuildCommand(distutils.command.build.build):

    def run(self):
        # Run the original build command
        distutils.command.build.build.run(self)
        # Custom build stuff goes here

# Replace the build command with ours
setup(...,
      cmdclass={"build": BuildCommand})
于 2017-05-02T01:36:04.120 回答