是否可以定义在setup.py中执行的命令

时间:2013-02-21 08:41:35

标签: python daemon

我想让我的守护程序在 setup.py install

之后自动启动

在shell中,我可以通过以下方式存档:

  

update-rc.d kmsd默认21

在setup.py(disutil)中,该怎么做?

是否可以这样做,或者我只能让我的用户在安装后手动调用此命令?

谢谢

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。我在自己的代码中这样做,使用遗留构建系统预编译一些库。

以下内容应该有效,但我应该通过说我没有测试下面的代码来说明这一点。

from distutils.core import setup, Command
import distutils.command.install as InstallCommand
from subprocess import call

class FinallyDoSomething(Command):
    description = "Do my custom stuff"
    user_options = []
    def initialize_options(self):
        pass

    def finalize_options(self):
        pass

    def run(self):
        call(["update-rc.d", "kmsd", "defaults", "21"])

class NewInstall(InstallCommand):
    sub_commands = InstallCommand.sub_commands + [
            ('custom_install', None),]

setup(name='PackageName',
      version='0.1',
      #The rest of the setup config
      cmdclass={
          'install': NewInstall,
          'custom_install': FinallyDoSomething,
          },
      )