HOWTO · Python
Eine bestimmte Python-Paketversion mit pip installieren
Installieren und überprüfen Sie eine exakte Python-Paketversion mit pip in der vorgesehenen Umgebung.
Auf dieser Seite
pip installiert Python-Pakete; es installiert oder wechselt nicht den Python-Interpreter selbst. Um eine bestimmte Paketversion mit dem gewünschten Interpreter zu installieren, führen Sie python -m pip install PACKAGE==VERSION aus. Unter Windows kann py -m pip install PACKAGE==VERSION ein registriertes Ziel des Python-Launchers auswählen. Verwenden Sie eine virtuelle Umgebung, wenn die Fixierung zu einem Projekt gehört.
Eine bestimmte Paketversion mit dem vorgesehenen Python-Interpreter installieren
Ersetzen Sie PACKAGE und VERSION durch einen Distributionsnamen und eine verfügbare Version, zum Beispiel python -m pip install requests==2.32.3. Der Spezifizierer == ist eine exakte Paketversionsfixierung. Sie ist nützlich für reproduzierbare Abhängigkeiten, aber kein Befehl zur Installation von Python 3.12, 3.13 oder einer anderen Interpreter-Version. Installieren oder wählen Sie diesen Interpreter zuerst und rufen Sie anschließend sein pip-Modul auf.
python -m pip ist einem nicht qualifizierten pip-Befehl vorzuziehen, weil dadurch die Zuordnung zwischen Interpreter und Paketmanager eindeutig ist. Prüfen Sie den ausgewählten Interpreter mit python --version und python -m pip --version, bevor Sie eine Projektabhängigkeit ändern.
Eine isolierte Umgebung erstellen oder auswählen und überprüfen
Erstellen Sie mit python -m venv .venv eine Umgebung und aktivieren Sie sie mit dem für Ihre Shell passenden Befehl. Nach der Aktivierung sollte python --version den Projekt-Interpreter angeben, und python -m pip --version sollte einen Pfad unter .venv anzeigen. Wenn einer der Befehle auf einen anderen Ort zeigt, halten Sie an und aktivieren Sie die richtige Umgebung, statt ein Paket global zu fixieren.
Eine exakte Paketversion installieren und überprüfen
Die folgende Offline-Fixture erstellt ein kleines Paket-Wheel, installiert dessen exakte Version in eine neue virtuelle Umgebung und gibt die installierten Metadaten aus. Bei der normalen Arbeit liefert Ihr Paketindex das Wheel; entscheidend am Installationsbefehl ist demo-package==1.0.0.
rm -rf /tmp/pip-pin-demo
python3 -m venv /tmp/pip-pin-demo
/tmp/pip-pin-demo/bin/python /work/build_wheel.py /tmp/pip-pin-demo/wheelhouse
/tmp/pip-pin-demo/bin/python -m pip install --no-index --find-links /tmp/pip-pin-demo/wheelhouse demo-package==1.0.0
/tmp/pip-pin-demo/bin/python -m pip show demo-package | sed -n '1,3p'
Der Test führt die Einrichtungsschritte vor diesen exakten Befehlen aus und bestätigt diese Ausgabe:
Looking in links: /tmp/pip-pin-demo/wheelhouse
Processing /tmp/pip-pin-demo/wheelhouse/demo_package-1.0.0-py3-none-any.whl
Installing collected packages: demo-package
Successfully installed demo-package-1.0.0
Name: demo-package
Version: 1.0.0
Summary: Local package used by the pip version-pin fixture
Bei einer echten Abhängigkeit überprüfen Sie sie mit python -m pip show PACKAGE oder durch den Import des Pakets im Projekt. pip lässt eine installierte Version normalerweise unverändert, solange Sie nicht --upgrade anfordern. --upgrade kann transitive Abhängigkeiten ändern; prüfen Sie daher die Resolver-Ausgabe und führen Sie anschließend die Projekttests aus.
Fixierungen in einer Requirements-Datei festhalten
Für mehrere Abhängigkeiten schreiben Sie jeweils eine Anforderung pro Zeile in requirements.txt, etwa requests==2.32.3 und urllib3==2.2.2, und installieren Sie die Datei mit python -m pip install -r requirements.txt. Committen Sie diese Datei, wenn sie eine reproduzierbare Anwendungsumgebung beschreibt. Eine von Ihrem Abhängigkeitswerkzeug erstellte Lock-Datei kann vollständiger sein, weil sie auch aufgelöste transitive Abhängigkeiten festhält.
Exakte Fixierungen, kompatible Bereiche oder Upgrades bewusst auswählen
Verwenden Sie eine exakte Fixierung, wenn ein Projekt eine getestete Paketversion benötigt. Wenn eine Bibliothek mit einer Reihe von Versionen kompatibel ist, kann ein Bereich wie package>=1.0,<2.0 passender sein. Setzen Sie Spezifizierer mit < oder > in Shells, die diese Zeichen interpretieren, in Anführungszeichen, zum Beispiel python -m pip install 'package>=1.0,<2.0'. Versionsspezifizierer folgen den PyPA-Regeln für das Packaging; nehmen Sie daher nicht an, dass jede scheinbare Versionsbezeichnung für jede Plattform oder Python-Version verfügbar ist.
Nicht verfügbare oder inkompatible Versionen untersuchen
Die Grenzfall-Fixture fordert demo-package==9.9.9 aus einer Wheelhouse an, die nur Version 1.0.0 enthält. Sie endet mit Status 1, weil keine passende Distribution verfügbar ist.
/tmp/pip-pin-demo/bin/python -m pip install --no-index --find-links /tmp/pip-pin-demo/wheelhouse demo-package==9.9.9
Wenn eine Installation aus einem öffentlichen Index ähnlich fehlschlägt, prüfen Sie zuerst den Paketnamen und die vom Index aufgelisteten Versionen. Prüfen Sie dann die Metadaten Requires-Python des Pakets und Ihre Interpreter-Version; eine ältere Version unterstützt möglicherweise keinen modernen Python-Interpreter, während eine neuere Version einen alten nicht unterstützt. Abhängigkeitskonflikte sind ein separates Resolver-Problem: Ändern Sie die Projektbeschränkungen bewusst, statt eine nicht verwandte alte Paketversion zu erzwingen. Wenn Sie tatsächlich einen anderen Python-Interpreter benötigen, installieren Sie ihn über Ihr Betriebssystem, Ihre Python-Distribution oder einen Versionsmanager, erstellen Sie daraus eine neue Umgebung und verwenden Sie anschließend das python -m pip dieses Interpreters.