Ich wundere mich über die richtige/einfachste/am meisten Python Art der Umgang mit Teilprojekten, die Sie haben möchten, mit dem gleichen Basispaket. Wir haben im Moment eine Dateistruktur wie dieses:Wie verwaltet man mehrere Python-Unterprojekte mit setuptools?
trunk\
proj1\setup.py
company_name\__init__.py + proj1's code
proj2\setup.py
company_name\__init__.py + proj2's code
Wir wollen den Namespace company_name halten, die für alle unsere Projekte (? Vielleicht dies selbst ist unpythonic), aber wenn proj1 und proj2 im Modus entwickeln installiert, die erste installiert wird gebrochen. Es sieht so aus, als ob import company_name...
verwirrt wird, auf welchem companion_name-Paket nachgesehen werden soll, und es ergreift den ersten/letzten/zufälligen.
Wie würde das normalerweise in einem größeren Python-Projekt gehandhabt? Ist es möglich, dies mit einem setup.py im Kofferraum zu lösen, der eine Art Mega-Ei baut? Ich habe keine relevanten Informationen auf Google oder Stack gefunden, so dass alle Informationen auch nur Links sehr geschätzt werden!
edit: Ich habe gerade versucht, eine setup.py im Stammordner Hinzufügen mit
...
namespace_packages = ['company_name'],
package_dir = {'company_name' : ['proj1/company_name', 'proj2/company_name']}
...
mit entsprechenden pkg_resources.declare_namespace(__name__)
in den __init_.py
Dateien, aber ./setup.py bdist_egg
gibt nur:
Fehler in company_name Setup-Befehl: Distribution enthält keine Module oder Pakete für das Namespace-Paket 'company_name'
Dafür habe ich das Schlüsselwort 'namespace_packages' entworfen, und Sie haben es tatsächlich richtig gemacht. –
Meine Firma begann mit Namespacepaketen und es wurde ein großer Fehler mit vielen Funktionen, die mit ihnen in normalen Projekten (laufende Komponententests, Installationen sind knifflig, usw.) gebrochen werden. Nur ein Wort der Warnung. – Lucas