Je m'interroge sur la manière correcte/la plus simple/la plus pythonique de traiter les sous-projets que vous voulez utiliser avec le même paquet de base. Nous avons actuellement une structure de fichier comme ceci:Comment gérer plusieurs sous-projets python avec setuptools?
trunk\
proj1\setup.py
company_name\__init__.py + proj1's code
proj2\setup.py
company_name\__init__.py + proj2's code
Nous voulons garder l'espace de noms company_name commun à tous nos projets (? Peut-être c'est lui-même unpythonic) mais quand proj1 et proj2 sont installés dans Develop mode, le premier installé est brisé. Il semble que import company_name...
soit confondu avec le paquet company_name à regarder et il saisit le premier/dernier/aléatoire.
Comment cela serait-il normalement géré dans un projet python plus important? Est-il possible de résoudre ceci avec un setup.py dans le tronc qui construit une sorte de méga-oeuf? Je n'ai trouvé aucune information pertinente sur google ou stack, donc toute information, même les liens sont grandement appréciés!
edit: Je viens d'essayer d'ajouter un setup.py dans le dossier racine avec
...
namespace_packages = ['company_name'],
package_dir = {'company_name' : ['proj1/company_name', 'proj2/company_name']}
...
avec pkg_resources.declare_namespace(__name__)
approprié dans les __init_.py
fichiers, mais ./setup.py bdist_egg
donne juste:
erreur Commande d'installation company_name: La distribution ne contient aucun module ou package pour le package d'espace de noms 'company_name'
C'est pour cela que j'ai conçu le mot-clé 'namespace_packages', et vous l'avez donc fait de la bonne façon. –
Ma société a commencé à utiliser des packages d'espaces de noms et cela a fini par être une énorme erreur avec beaucoup de fonctionnalités qui sont cassées avec eux et qui sont disponibles dans des projets normaux (tests unitaires, installations difficiles, etc). Juste un mot d'avertissement. – Lucas