Python-Paketmanager: pip 20.3 prüft Abhängigkeiten genauer
Der im Frühjahr eingeführte neue Dependency Resolver ist nun standardmäßig in pip aktiviert. Außerdem schneidet das Tool alte Python-Zöpfe ab.
![Python](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/3/0/1/1/3/9/5/Python-cde68b5a8634d221.jpeg)
Das Team hinter pip hat Version 20.3 des Paketverwaltungsprogramms für Python veröffentlicht. Die wesentliche Neuerung ist die standardmäßige Aktivierung des für die Auflösung der Abhängigkeiten zuständigen neuen Dependency Resolver. Außerdem läutet der Paketmanager, dessen Name ein rekursives Akronym von Pip Installs Packages ist, den Abschied von Python 3.5 ein.
In die richtige Abhängigkeit begeben
Eine wichtige Aufgabe von Paketmanagement-Werkzeugen wie pip im Python- oder npm im JavaScript-Umfeld ist das Verwalten von Dependencies. Entwicklerinnen und Entwickler, die Pakete bereitstellen – im Fall von pip auf dem Python Package Index PyPI –, geben an, welche anderen Packages in welchen Versionen zur Installation erforderlich sind. Dabei können potenziell widersprüchliche Anforderungen auftreten.
Ebendiese soll der neue Dependency Resolver besser auflösen. Er ist zwar seit dem im Mai veröffentlichten pip 20.1 im Paketmanager enthalten, war bisher allerdings als Preview gekennzeichnet und standardmäßig deaktiviert. Nun befindet das Team ihn als stabil genug, dass pip ihn per Default verwendet.
Keine Widersprüche dulden
Der neue Resolver installiert keine Kombination aus Paketen, die zu einer Inkonsistenz führen, weil ihre Bedingungen sich gegenseitig ausschließen. Als Beispiel führt die Dokumentation den Befehl
pip install "six<1.12" "virtualenv==20.0.2"
auf, der bis pip 20.2 zu der vermeintlich erfolgreichen Installation von six==1.11
führt. Allerdings steht in den Dependencies von virtualenv==20.0.2
, dass das Paket eine Version von six voraussetzt, die mindestens 1.12 ist: requires six>=1.12.0,<2
. Der Dependency Resolver in pip 20.3 erkennt den Widerspruch und bricht die Installation ab.
Die Überprüfung gilt nur für den jeweils aktuellen Befehl. Somit kann beispielsweise der Befehl pip install x y
aufgrund der Konsistenzprüfung eine andere Variante von y installieren als die nacheinander ausgeführte Installation über pip install x
und pip install y
.
Der Papagei ist tot
Mit pip 20.3 ist Python 3.5 als überholt (deprecated) gekennzeichnet. Bereits im Oktober hatte der Python-Insider-Blog das Ende des Supports für das Release gemeldet. Endgültig entfernen wird das pip-Team Python 3.5 aber erst in pip 21.0, das im Januar 2021 erscheinen soll. Dann ist auch mit dem ebenfalls angekündigten Support-Ende für Python 2.7 endgültig Schluss mit der Anbindung von Python 2.
Weitere Details zu pip 20.3 lassen sich dem Blog der Python Software Foundation entnehmen. Entwicklerinnen und Entwickler können die aktuelle Version von pip über python -m pip install --upgrade pip
installieren.
(rme)