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.