Лучше всего сделать в два этапа, используя механизм 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
).)