如何对build命令进行子类化?

2024-09-28 23:23:57 发布

您现在位置:Python中文网/ 问答频道 /正文

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

class BuildCommandProxy(setuptools.command.build):
    pass

class BuildCommandProxy(distutils.command.build):
    pass

甚至:

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

没有任何成功

更新:寻找如何用^{实现类似this的东西

更新2:我有一些自定义命令实现:

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

我想实现的是将此命令传递给cmdclass,如下所示:

cmdclass={
    "build": CustomCommand,
}

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


Tags: py命令build主题setup步骤passsetuptools
2条回答

Setuptools不会覆盖distutils{}命令本身;只有build_pybuild_ext子命令

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

import distutils.command.build

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

为完整起见,以下是如何添加自定义生成操作的完整示例:

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})

相关问题 更多 >