Подтвердить что ты не робот

Как я могу запустить файл script как часть установки python setup.py?

Вопрос

Я знаю, как использовать setup.py с setuptools для регистрации script. Как я могу запустить другой файл script (скажем, файл make) как часть python setup.py install.

Фон

Я предполагаю, что буду использовать что-то вроде:

os.system('make maketarget') #from somewhere in the package

Но setuptools.setup получает dict, поэтому я не могу просто добавить эту строку внутри setup()/, и мне нужен script для запуска после того, как базовый пакет будет установлен setup.py install.

Я знаю, что могу добавить команду в setup.py, но я хочу, чтобы этот script вызывался внутри этапа установки.

Я также могу по умолчанию просто поместить a:

if sys.argv[-1] == 'install':
    os.system('do something in the shell')

и просто поместите этот блок после установки(), но почему-то это не выглядит очень пироническим (а также подверженным ошибкам, мне нужно найти, где этот пакет установлен точно и т.д.)

4b9b3361

Ответ 1

Вы можете подклассифицировать существующую команду установки из setuptools и расширить ее с требуемой функциональностью. После этого вы можете зарегистрировать его как команду установки в настройке:

from setuptools.command.install import install

class MyInstall(install):

    def run(self):
        install.run(self)
        print("\n\n\n\nI did it!!!!\n\n\n\n")

# in the setup function:
cmdclass={'install': MyInstall}

Вместо оператора печати просто вызовите script.

Помните, что существует множество способов упаковки программного обеспечения python (яйца и т.д.). Ваш script не будет вызван для этих способов, если вы вызываете его только на этапе установки.