Me pregunto cuál es la forma correcta/más fácil/más pitónica de tratar los subproyectos que desea utilizando el mismo paquete base. Actualmente contamos con una estructura de archivos como esto:¿Cómo administrar varios subproyectos de python con setuptools?
trunk\
proj1\setup.py
company_name\__init__.py + proj1's code
proj2\setup.py
company_name\__init__.py + proj2's code
queremos mantener la company_name espacio de nombres comunes a todos nuestros proyectos (? tal vez esto sí es unpythonic) pero cuando proj1 y Proj2 se instalan en el modo de desarrollo, el primero instalado se rompe. Parece que import company_name...
se confunde con el paquete company_name para buscar y toma el primero/último/aleatorio.
¿Cómo se manejaría esto normalmente en un proyecto python más grande? ¿Es posible resolver esto con un setup.py en el maletero que construye una especie de mega-huevo? No he encontrado ninguna información relevante en google o stack, por lo que cualquier información, incluso solo enlaces, son muy apreciados.
edición: he intentado añadir un setup.py en la carpeta raíz con
...
namespace_packages = ['company_name'],
package_dir = {'company_name' : ['proj1/company_name', 'proj2/company_name']}
...
con pkg_resources.declare_namespace(__name__)
apropiada en los archivos __init_.py
, pero apenas da ./setup.py bdist_egg
:
error en comando de instalación nombre_compañía: la distribución no contiene módulos o paquetes para el paquete de espacio de nombres 'nombre_empresa'
Para eso diseñé la palabra clave 'namespace_packages', por lo que de hecho lo hizo de la manera correcta. –
Mi empresa comenzó a usar paquetes de espacios de nombres y terminó siendo un gran error con muchas funcionalidades que se rompieron con ellos y que están disponibles en proyectos normales (pruebas de unidades en ejecución, instalaciones complejas, etc.). Solo una palabra de advertencia. – Lucas