2015-01-23 7 views
5

Ich habe ein Python-Projekt mit den folgenden Aufbau (irrelevant Quelldateien der Einfachheit halber weggelassen):Wie installiert man eine Abhängigkeit von einem Submodul in Python?

myproject/ 
    mysubmodule/ 
     setup.py 
    setup.py 

Die Datei myproject/setup.pydistutils.core.setup das Modul myproject und die entsprechenden Quellen zu installieren, verwendet. myproject erfordert jedoch die Installation von mysubmodule (dies ist ein Git Submodul). Also, was ich jetzt tue, ist:

myproject/$ cd mysubmodule 
myproject/mysubmodule/$ python setup.py install 
myproject/mysubmodule/$ cd .. 
myproject/$ python setup.py install 

Dies ist für Kunden zu langweilig ist, vor allem, wenn das Projekt durch weitere Submodule in Zukunft erweitert werden.

Gibt es eine Möglichkeit, die Installation von mysubmodule beim Aufruf myproject/setup.py zu automatisieren?

+0

Das manuelle Installieren von Modulen erfordert einige Fähigkeiten, daher kann es für _customers_ – ForceBru

+0

zu schwierig sein. Ja, genau deshalb möchte ich den Aufwand minimieren. – jotrocken

Antwort

2

Erstellen Sie ein Paket für mysubmodule mit einem eigenen setup.py und lassen Sie das Top-Level-Paket von diesem Paket in seiner setup.py abhängen. Das heißt, Sie müssen nur die Pakete/Abhängigkeiten verfügbar machen und python setup.py install auf dem Top-Level-Paket ausführen.

Die Frage wird dann, wie die Abhängigkeiten/Pakete an Ihre Kunden gesendet werden, aber dies kann gelöst werden, indem Sie sie in ein Verzeichnis einfügen und setup.py konfigurieren, um dieses Verzeichnis bei der Suche nach Abhängigkeiten einzuschließen.

Die Alternative ist zu "Vendor" mysubmodule, die einfach bedeutet, alles in einem Paket (keine weiteren Fragen gestellt) und mit einem python setup.py install, um das Hauptpaket zu installieren. Zum Beispiel, pip Anbieter (einschließlich) requests so kann es verwenden, ohne von diesem requests Paket abhängen zu müssen.

+0

Können Sie weitere Details zur Angabe der Abhängigkeit in der 'setup.py' des Pakets der obersten Ebene angeben? – dPol

Verwandte Themen