我的python软件包依赖于静态数据文件,该静态数据文件是使用软件包的一部分功能从较小的种子文件自动生成的。
在运行setup.py install
时进行这一代对我来说很有意义,setup()
中是否有描述“安装此软件包的其他文件之前运行此功能”的标准方法(这些选项the docs中的所有内容都是静态的)?如果没有,我应该在哪里调用该函数?
答案 0 :(得分:1)
使用cmdclass
机制最好分两步进行:
build_py
以便在继续操作之前调用它from distutils.cmd import Command
from setuptools import setup
from setuptools.command.install import install
class GenerateDataFileCommand(Command):
description = 'generate data file'
user_options = []
def run(self):
pass # Do something here...
class InstallCommand(install):
def run(self):
self.run_command('generate_data_file')
return super().run()
setup(
cmdclass={
'generate_data_file': GenerateDataFileCommand,
'install': InstallCommand,
},
# ...
)
通过这种方式,您可以调用python setup.py generate_data_file
作为独立步骤来生成数据文件,但是通常的设置过程(python setup.py install
)也可以确保已被调用。
(但是,我建议将已构建的文件包括在分发存档中,因此最终用户不必自己构建它-也就是说,覆盖build_py
(类setuptools.command.build_py.build_py
)而不是安装。)