Python Packages aus mehreren Repositories installieren

Gelegentlich möchte man Python Packages von verschiedenen Servern laden und installieren. Grundsätzlich lässt sich dieses Problem mittels dem Hinzufügen von –index-url <url> (default: https://pypi.python.org/simple) bzw. –extra-index-url <url> lösen.

Lösung 1:

Hinzufügen von extra-index-urls als erstes statement in der requirements.txt Datei.

Dies fügt eine weitere Index Url hinzu ohne jedoch den Hauptindex zu überschreiben. Dies würde passieren, wenn -i bzw. –index-url zum Einsatz käme. Dann würde pip versuchen alle packages über den nun als Hauptindex gültigen Server laden

# requirements.txt
--extra-index-url http://my-index-url.domain/my-package
my-package==1.0.0
other-packages

Lösung 2:

Kaskadierende requirements Dateien.

Auch hier fügt man den zusätzlichen Server als extra-index-url hinzu.  Die zu importierenden Packages sind in Dateien im Verzeichnis requirements definiert. Die Dateien selbst sind in der requirements.txt  referenziert.

# requirements.txt
--extra-index-url http://my-index-url.domain/my-package
-r requirements/req2.txt
-r requirements/req3.txt
# requirements/req2.txt
my-package==1.0.0
# requirements/req3.txt
other-package==1.0.0

In jedem Fall sollte pip nun in der Lage sein, die packages zu installieren. Alle Packages, die nicht im Hauptindex gefunden werden können, werden vom Server, der in extra-index-url definiert wurde, geladen.

pip install -r requirements.txt