Pip install: Mehrere Indizes enthalten dieselbe Paketversion – welche wird verwendet?Python

Python-Programme
Anonymous
 Pip install: Mehrere Indizes enthalten dieselbe Paketversion – welche wird verwendet?

Post by Anonymous »

Ich arbeite mit mehreren (privaten) Pip-Registern (z. B. GitLab). Meine pip.conf sieht so aus:

Code: Select all

[global]
index-url = url.to.registry_1/pypi/simple
extra-index-url = url.to.registry_2/pypi/simple
Beide Registrierungen enthalten das gleiche Paket mit derselben Version:



Registrierung
Paketname
Version



Code: Select all

registry_1

Code: Select all

package-b

Code: Select all

0.2.0

Code: Select all

registry_2

Code: Select all

package-b

Code: Select all

0.2.0


Wenn ich ausführe:

Code: Select all

pip install -vvv package-b==0.2.0
pip sammelt Kandidaten aus beiden Registern und installiert eines davon. Beispiel-Log-Snippet:

Code: Select all

Found link package_b-0.2.0-py3 (from registry_1)
Found link package_b-0.2.0-py3 (from registry_2)
Collecting package-b==0.2.0
Using cached package_b-0.2.0-py3-none-any.whl
Successfully installed package-b-0.2.0
Ich verstehe, dass Pip normalerweise die höchste Version aus allen Kandidaten auswählt, die es findet (siehe Dokumente).

Aber in diesem Fall haben beide Kandidaten den gleichen Namen und die gleiche Version, sodass eine versionbasierte Auswahl nicht hilft.
Meine Frage ist:

Wie wählt pip zwischen Distributionen mit identischem Namen==Version, die sich auf verschiedenen befinden? Indizes?
In der Dokumentation heißt es:

„Es gibt keine Priorität bei den Orten, die durchsucht werden; der am besten passende Kandidat wird ausgewählt.“

Aber das verdeutlicht nicht, wie sich Pip verhält, wenn mehrere Kandidaten gleich am besten sind.

Gibt es eine offizielle Regel für das Gleichstandsbrechen? Zum Beispiel:
  • index-url gegenüber extra-index-url bevorzugen?
  • die erste gefundene Übereinstimmung bevorzugen?
  • den neuesten Upload-Zeitstempel bevorzugen?
  • alphabetische Reihenfolge?
  • Cache-Verhalten?
Oder behandelt Pip nur beides? package-b==0.2.0 gilt als vollständig austauschbar, was bedeutet, dass die Quellregistrierung undefiniert/nicht garantiert ist?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post