Encadenando ejecuciones de script de installation de Python

Tengo un package de Python que depende de otros dos packages de Python que no quiero distribuir como huevos o ruedas.

He configurado mi file de modules git para extraer estos packages, sin embargo, ahora quiero crear mi script setup.py para el package principal, de modo que también ejecute los scripts setup.py para ambos submodules.

Puedo hacer esto de una manera hacky agregando lo siguiente al script principal setup.py:

# run the setup for the sub modules. from subprocess import Popen import os import sys dir1 = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'src/module1') dir2 = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'src/module2') # check to make sure the directories exist if os.path.exists(dir1) and os.path.exists(dir2): install1 = Popen('cd '+dir1+'; python setup.py install;', shell=True) install2 = Popen('cd '+dir2+'; python setup.py install;', shell=True) else: print "sub-modules not found, did you clone with the recursive tag?" sys.exit() 

Sin embargo, me gustaría saber si hay una forma aceptada de hacerlo utilizando setuptools o algo similar.

Para distribuir su aplicación con todos los modules dependientes, puede usar pip con requirements.txt en la carpeta raíz de su package principal.

A saber, instala los packages adicionales con

pip install git+git://github.com/myuser/foo.git@v123 ...

A continuación, volque la list de packages instalados

pip freeze > requirements.txt

Y finalmente agregue al file Léame el siguiente paso de installation

pip install -r requirements.txt

Pip ejecuta automáticamente setup.py en submodules para que no haya necesidad de ejecutarlos explícitamente.