So verwalten Sie Python-Projekte mit Pipenv

Mit dem Paket-Ökosystem von Python können Sie die Arbeit von Millionen anderer Entwickler mit einem einfachen pip installBefehl nutzen. In den virtuellen Umgebungen von Python können Sie Projekte und deren Pakete voneinander isolieren.

Das separate Jonglieren von Umgebungen und Paketen kann jedoch unhandlich sein. Doppelt so, wenn Ihre Projekte bestimmte Paketanforderungen haben und Sie sich auf die Entwicklung anstatt auf die Wartung konzentrieren möchten. Was wir brauchen, ist eine Möglichkeit, Umgebungen und Pakete gemeinsam zu verwalten. 

Pipenv vereint die Verwaltung von virtuellen Python-Umgebungen und Python-Paketen in einem einzigen Tool. Pipenv stellt sicher, dass jedes Projekt die richtige Version jedes benötigten Pakets verwendet und dass jedes dieser Pakete auch die richtigen Abhängigkeiten aufweist.

Darüber hinaus generiert Pipenv eine Liste der Abhängigkeiten Ihres Projekts, die damit verbunden sein können, sodass andere Benutzer oder Entwickler dasselbe Projekt auf dieselbe Weise einrichten können. Andere Benutzer müssen ebenfalls Pipenv installieren, um ein von Pipenv verwaltetes Projekt ordnungsgemäß einzurichten. Glücklicherweise ist die Installation und Verwendung von Pipenv ein Kinderspiel. 

Wie Pipenv funktioniert

Wenn Sie ein Python-Projekt erstellen und eine virtuelle Umgebung für seine Pakete verwenden, müssen Sie in der Regel die virtuelle Umgebung selbst erstellen (mithilfe des Befehls  py -m venv), Abhängigkeiten darin installieren und die Abhängigkeiten manuell verfolgen.

Pipenv bietet eine Möglichkeit, dies alles halbautomatisch zu erledigen. Die virtuelle Umgebung für Ihr Projekt wird für Sie erstellt und verwaltet, wenn Sie Pakete über die Befehlszeilenschnittstelle von Pipenv installieren. Abhängigkeiten werden nachverfolgt und gesperrt, und Sie können Entwicklungs- und Laufzeitabhängigkeiten separat verwalten. Sie können auch von vorhandenen requirements.txtDateien der alten Schule migrieren , sodass Sie Ihr Projekt nicht zerreißen und von vorne beginnen müssen, um Pipenv gut zu verwenden.

Beachten Sie, dass Pipenv im Gegensatz zu anderen Python-Projektmanagement-Tools (z. B. Poetry) das „Gerüst“ Ihres Projekts nicht verwaltet. Das heißt, Pipenv erstellt die interne Struktur des Projektverzeichnisses nicht mit Mock-Tests, Dokumentationsstubs usw., sondern konzentriert sich hauptsächlich auf das Paket- und Umgebungsmanagement. Dies macht Pipenv zu einer guten Wahl, wenn Sie nur möchten, dass sich ein Tool auf virtuelle Umgebungen und Pakete konzentriert und keine All-in-One-Lösung.

Beginnen Sie mit Pipenv

Pipenv wird auf die gleiche Weise installiert wie die meisten anderen Python-Pakete : pip install --user pipenv. Die --userOption wird empfohlen, um zu verhindern, dass Pipenv mit anderen systemweiten Paketen in Konflikt gerät. Sie sollten auch den Pfad zum Benutzerbasis-Binärverzeichnis zum Systempfad hinzufügen, damit Pipenv-Befehle an die richtige Stelle geleitet werden.

Wenn Sie Pipenv zu einem konsistenten Bestandteil Ihres Workflows machen möchten, ist es auch eine gute Idee, die zugrunde liegende Python-Installation so gering wie möglich zu halten. Dieser Rat gilt für die meisten Python-Installationen, die virtuelle Umgebungen verwenden.

Richten Sie mit Pipenv ein neues Projekt ein

Um ein komplett neues Projekt mit Pipenv zu beginnen, erstellen Sie einfach ein Verzeichnis und füllen Sie es mit den Dateien, die Sie normalerweise für ein Projekt erstellen würden. Wenn Sie dazu neigen, ein Projekt unterwegs zu erstellen, können Sie mit einem leeren Verzeichnis beginnen.

Das Installieren von Paketen für ein Projekt unterscheidet sich bei Pipenv nicht wesentlich von Pip. Tatsächlich ist die Syntax ähnlich. Öffnen Sie eine Konsole in Ihrem Projektverzeichnis und geben Sie ein pipenv install , um ein Paket für das Projekt zu installieren. Verwenden Sie das Flag , um anzugeben, dass das Paket für die Entwicklung vorgesehen ist -d. Sie können die pip Syntax verwenden, um eine bestimmte Version eines Pakets zu kennzeichnen (z black==13.0b1. B. ).

Wenn Sie ein Paket mit Pipenv installieren, passieren zwei Dinge. Zunächst prüft Pipenv, ob für dieses Projektverzeichnis bereits eine virtuelle Umgebung erstellt wurde. Wenn ja, installiert Pipenv das Paket in der vorhandenen virtuellen Umgebung. Wenn nicht, erstellt Pipenv eine virtuelle Umgebung, die dieselbe Python-Edition verwendet, mit der Pipenv ausgeführt wird. Beachten Sie, dass die virtuelle Umgebung nicht im Projektverzeichnis selbst erstellt wird. Es wird in einem von Pipenv verwalteten Verzeichnis in Ihrem Benutzerprofil erstellt.

Zweitens installiert Pipenv die angeforderten Pakete in der virtuellen Umgebung. Nach Abschluss der Installation meldet Pipenv alles, was es getan hat, einschließlich eines Pfads zur virtuellen Umgebung, falls einer erstellt werden musste.

Im Allgemeinen müssen Sie den Pfad zur virtuellen Umgebung, die Pipenv erstellt, nicht kennen. Um die Umgebung zu aktivieren, navigieren Sie einfach zu Ihrem Projektverzeichnis und  pipenv shellstarten Sie damit eine neue Shell-Sitzung oder  pipenv run führen Sie einen Befehl direkt aus. Verwenden Sie pipenv run mypydiese Option beispielsweise, um  die Befehlszeilen-Toolversion von auszuführen mypy(vorausgesetzt, das mypyTool wurde in der virtuellen Umgebung installiert), oder pipenv run python -m um ein Python-Modul auszuführen, das in der virtuellen Umgebung verfügbar ist.

Pipenv und Lockfiles

Blick in das Verzeichnis , nachdem Sie Pakete mit Pipenv installiert haben, und Sie werden zwei Dateien sehen, Pipfileund Pipfile.lock. Beide werden von Pipenv automatisch generiert und sollten nicht direkt bearbeitet werden, da sie den Status der Pakete im Projekt beschreiben.

Pipfileist der einfachere von beiden. Es werden nur die für das Projekt benötigten Pakete aufgelistet, von wo aus sie installiert werden (die Standardeinstellung ist PyPI) und welche Python-Version benötigt wird, um alles auszuführen. Pipfile.lockist komplexer. Es listet jedes Paket zusammen mit Versionsdetails und SHA-256-Hashes auf, die aus dem Paket generiert wurden. Die Hashes werden verwendet, um sicherzustellen, dass die installierten Pakete genau den Angaben entsprechen - nicht nur der Versionsnummer, sondern auch dem erhaltenen Inhalt.

Wenn Sie an einem Projekt arbeiten , das Pipenv für die Paketverwaltung verwendet, möchten Sie die hinzufügen Pipfileund Pipfile.lockDateien in das Repository der Versionskontrolle für das Projekt. Alle Änderungen, die an den Paketen für Ihr Projekt vorgenommen werden, ändern wiederum diese Dateien. Daher sollten diese Änderungen nachverfolgt und versioniert werden.

Verwenden Sie ein Pipenv-Projekt

Wenn Sie ein Quell-Repository für ein Projekt herunterladen, das Pipenv für die Paketverwaltung verwendet, müssen Sie lediglich den Inhalt des Repositorys in ein Verzeichnis entpacken und ausführen pipenv install(keine Paketnamen erforderlich). Pipenv liest die Pipfileund Pipfile.lock-Dateien für das Projekt, erstellt die virtuelle Umgebung und installiert nach Bedarf alle Abhängigkeiten.

Wenn Sie Pipenv zum Verwalten eines Projekts verwenden möchten, das derzeit eine requirements.txtDatei verwendet, navigieren Sie einfach zum Projektverzeichnis und führen Sie es aus pipenv install. Pipenv erkennt das  requirements.txt(oder Sie können das -rFlag verwenden, um darauf zu zeigen) und migriert alle Anforderungen in ein Pipfile.