Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:pipenv

Dient der Verwaltung virtueller Python-Environments und dient innerhalb dieser zur Verwaltung der Pakete und Auflösung von Abhängigkeiten.

  • Virtuelle Umgebungen erlauben es innerhalb der Umgebung eine festgelegte Python-Version
  • und definierte Versionen (unabhängig von der systemweiten Python-Installation) zu haben
  • verbessert die Verwaltung von Abhängigkeiten aller Pakete untereinander
    • pip selbst löst zwar Abhängigkeiten auf, kann dabei aber Abhängigkeiten von bereits installierten Paketen beschädigen (wenn zum Beispiel ein installiertes Paket eine Abhängigkeit zu einer bestimmten Version eines anderen Paketes hat)
  • nutzt intern env und pip

Arbeitsweise

  • es gibt eine zentrale Registry (per Default in '~/.local/share/virtualenv/Verzeichnisname+Hash/)
  • im eigentlichen Verzeichnis gibt es Pipfile → das enthält alle Pakete und Informationen zum Interpreter und darüber kann man die nötige Umgebung überall wieder erzeugen

Grundlegende/Wichtige Kommandos

Kommando Beschreibung
virtualenv shellWechselt in die virtuelle Umgebung des Verzeichnisses (man muss sich im Verzeichnis des Projektes befinden).

Existiert die Umgebung noch nicht wird sie erstellt.
OptionBeschreibung
--python <Version>
Gibt an welche Version des Interpreters für diese virtuelle Umgebung benutzt werden soll
virtualenv --rm
Löscht eine virtuelle Umgebung aus der Registrie.

Pipfile wird nicht gelöscht → man kann die Umgebung also wieder herstellen - muss ggf. händisch gelöscht werden wenn man es komplett weghaben will
pipenv install <package>Installiert ein bestimmtes Softwarepaket, allerdings nur für diese Umgebung.
Option Beschreibung
-e <URL externe Quelle>
Installiert das Paket aus einer externen Quelle statt über PyPi
Package==Version
Funktioniert (sowie „<“ und „>“) wie bei pip und definiert das von einem bestimmten Paket eine bestimmte Version installiert werden soll
--dev
Speichert die Pakete als nur für „Entwicklungsumgebung“ benötigt ab.
Das macht Sinn für Pakete die nur für die Entwicklungsumgebung benötigt werden, aber nicht für produktiven Code (also zum Beispiel Unittest).

Man kann dann die Pakete woanders (andere Maschine) installieren per pipenv install –dev
pip install --dev
Installiert alle „normalen“ Pakete + alle die mit der Option „–dev“ installiert wurden. Darüber kann man die notwendigen Pakete laden die für eine „Entwicklungsumgebung“ notwendig sind
pipenv checkPrüft die installierten Pakete auf neue? Abhängigkeiten und auf Sicherheitslücken (dazu wird die safety-Library des pyuopio-Projektes benutzt die Sicherheitslücken in vielen Python-Paketen verfolgen) genutzt und spielt entsprechend Updates ein
pipenv uninstallDeinstalliert Pakete (in der virtuellen Umgebung).
OptionBeschreibung
--all
Deinstalliert alle Pakete
--all-dev
Deinstalliert alle Pakete die mit
--dev

installiert

 pipenv --rm 
Löscht das virtuelle Environment (gemeint ist die Installation des Interpreters und der Pakete → für gewöhnlich in ~/.local/share/environments/).

Pipfile und Pipfile.lock bleiben erhalten. Dadurch lässt sich einfach durch aufrufen von pipenv und pipenv sync ein neues Environment erstellen

Dateien

Pipfile

  • ist im Hauptverzeichnis des Projektes zu finden
  • enthält
    • Liste der Pakete die installiert werden müssen für die Umgebung
    • Liste der Pakete die installiert werden müssen um die Umgebung für die Entwicklung zu nutzen (das sind zusätzliche Pakete die nur für die Entwicklung benötigt werden)
    • Informationen welche Python-Version benötigt wird
  • enthält nur nur die Liste der installierten Pakete, aber nicht ihre Abhängigkeiten (also nicht die Pakete die installiert wurden um deren Abhängigkeiten zu befriedigen)
  • kann manuell editiert werden

Pipfile.lock

  • Datei für „reproduzierbare Builds“
  • entsteht aus Pipfile durch Aufruf von pipenv lock
  • enthält den gleichen Inhalt wie Pipfile
    • + die genauen Versionen der installierten Pakete + die genauen Versionen der Abhängigkeiten
    • dadurch lässt sich auf einem anderen System genau die gleiche Umgebung (exakt mit den gleichen Versionen der Pakete) replizieren

.env

  • Enthält environment-Variablen
  • wird gelesen wenn man pipenv shell ausführt

Troubleshooting

Problem Lösung
Python-Version ändern Kann u.a. auch notwendig sein wenn man von einer Maschine auf eine andere portiert.

  • Virtuelle Umgebung (die installierten Pakete usw. (die befinden sich in der Regel in ~./local/share/environments) löschen

pipenv --rm 

  • im Pipfile
[requires]
python_version = "3.10"

Auf die gewünschte Python-Version ändern

  • Environment neu-installieren

pipenv

  • Pakete neuinstallieren

pipenv sync

python/pipenv.txt · Zuletzt geändert: 2023/12/28 18:07 von root