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

Min*_*nfu 5 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'
          ],
      },
)
Run Code Online (Sandbox Code Playgroud)

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

Jen*_*man 6

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

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

setup( 
    ... 
    options={'bdist_rpm': {'post_install': '<post_install script name>'}},
    ... 
)
Run Code Online (Sandbox Code Playgroud)

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