Создать файл данных во время установки - PullRequest
0 голосов
/ 12 апреля 2019

Мой пакет python зависит от файла статических данных, который автоматически генерируется из меньшего начального файла с использованием функции, которая является частью пакета.

Имеет смысл сделать это поколение во время запуска setup.py install, есть ли в setup() стандартный способ описания «запуска этой функции перед установкой дополнительных файлов этого пакета» (опции в документы все статичны)? Если нет, где я должен сделать вызов этой функции?

1 Ответ

1 голос
/ 12 апреля 2019

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

...