如何在python setuptools中包含安装后脚本

时间:2016-03-10 02:03:28

标签: python setuptools rpmbuild buildpack

import os
from setuptools import setup
from distutils.command.install import install as _install
def _post_install(dir):
    from subprocess import call
    call([sys.executable, 'post_script.py'],
    cwd=os.path.join(dir, 'script_folder'))


class install(_install):
    def run(self):
        _install.run(self)
        self.execute(_post_install, (self.install_lib,),
                     msg="Running post install task")


VERSION = '123'
setup(name='XXXX',
      description='hello',
      url='http://giturl.com',
      packages=['package_folder'],
      cmdclass={'install': install},
      package_data={
              'package_folder': [
              '*.py',
              'se/*pp'
          ],
      },
)

# 基本上,一旦我安装了正在构建的rpm,就应该执行postscript。 它不起作用。 这样的任何其他方法都不起作用?

1 个答案:

答案 0 :(得分:2)

你可以运行python setup.py bdist_rpm --post-install=<script name> 这将创建一个rpm,它将在正常rpm创建完成后运行您提供的脚本内容。

如果您想在setup.py中执行此操作,可以传递

setup( 
... 
options = {'bdist_rpm':{'post_install' : '<post_install script name>'}},
... 
)

这只会影响bdist_rpm,因此只会影响您使用python setup.py bdist_rpm创建的rpm