Как я могу запустить файл 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')
и просто поместите этот блок после установки(), но почему-то это не выглядит очень пироническим (а также подверженным ошибкам, мне нужно найти, где этот пакет установлен точно и т.д.)
Ответы
Ответ 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 не будет вызван для этих способов, если вы вызываете его только на этапе установки.