2013-03-15 4 views
11

ВопросКак запустить файл сценария как часть установки python setup.py?

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

фон

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

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

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

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

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

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

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

ответ

6

Вы можете подклассифицировать существующую команду установки из 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} 

Вместо заявления печати просто вызвать скрипт.

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

Смежные вопросы