[In der Abbildung verstanden] Verwaltung der virtuellen Python-Umgebung durch Pipenv

Ich habe nicht wirklich verstanden, wie man Pipenv benutzt, also ist es ein Memo, als ich verschiedene Bewegungen ausprobierte, während ich hauptsächlich das offizielle Dokument las.

Da die Beziehung zwischen den einzelnen Befehlen dargestellt ist, werde ich sie in diesen Ablauf schreiben. Die Zahlen in der Abbildung entsprechen den Zahlen in den Absätzen dieses Artikels.

スクリーンショット 2020-01-01 20.10.48.png

Pipenv

In der Vergangenheit wurden virtuelle Python-Umgebungen häufig mit Pip und Verticalenv erstellt. Pipenv ist jedoch ein Tool, mit dem Sie alle gemeinsam verwalten können.

Pipfile und Pipfile.lock

Pipenv generiert zwei Dateien. Grundsätzlich bearbeiten Sie diese nicht direkt, aber ich werde jede Rolle unterdrücken, um den Grund und den Status der virtuellen Umgebung zu verstehen. Jede Datei hat die folgenden Rollen und Eigenschaften.

Pipfile --Verwalten Sie verschiedene Pakete und deren Versionen

Pipfile.lock

Werfen wir einen Blick auf die einzelnen Befehle und deren Verwendung.

0. Vorbereitung

Installieren Sie Pipenv.

$ brew install pipenv

Es kann auch mit pip installiert werden.

$ pip install pipenv

Initialisieren Sie die virtuelle Umgebung, indem Sie die Python-Version angeben. Wenn die angegebene Version nicht vorhanden ist, wird sie über pyenv installiert.

$ pipenv --python 3.6

Wenn die virtuelle Umgebung initialisiert wird, wird eine Datei namens Pipfile generiert.

  1. install

Sie können das Paket mit dem Befehl install installieren.

Verwenden Sie vorhandene Pipfile oder Pipfile.lock

Wenn sich Pipfile- und Pipfile.lock-Dateien in derselben Hierarchie befinden, in der der Befehl ausgeführt wird, wird die Umgebung unter Bezugnahme auf diese Dateien erstellt.

$ pipenv install

Verwenden Sie die vorhandenen Anforderungen.txt

Sie können eine von Piprnv verwaltete Umgebung aus der Datei "resources.txt" erstellen, auch wenn sie ursprünglich nicht von Pipenv verwaltet wurde.

$ pipenv install -r ./requirements.txt

Erstellen Sie eine neue Umgebung

Wenn keine Referenzdatei vorhanden ist, wird die Umgebung auf die gleiche Weise wie "pipenv --python " erstellt.

$ pipenv install --python 3.6

Für den Installationsbefehl wird zusätzlich zur Pipfile eine Pipfile.lock-Datei generiert. Werfen wir einen Blick auf den Inhalt.

Pipfile


[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]             //Leer, da ich das Paket noch nicht installiert habe

[requires]
python_version = "3.6" //Version 3.6 ist angegeben

Pipfile.lock


{
    "_meta": {
        "hash": {
            "sha256": "415dfdcb118dd9bdfef17671cb7dcd78dbd69b6ae7d4f39e8b44e71d60ca72e7"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "3.6"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {}, //Leer, da ich das Paket noch nicht installiert habe
    "develop": {} 
}

Fügen Sie ein Paket hinzu

Ich werde Pandas als Test hinzufügen.

$ pipenv install pandas

Dann wird jedes wie folgt hinzugefügt.

Pipfile


[packages]
pandas = "*" //Keine Version angegeben

Pipfile.lock


    "default": {
        "numpy": {
            "hashes": [
                "sha256:03bbde29ac8fba860bb2c53a1525b3604a9b60417855ac3119d89868ec6041c3",
(Weggelassen)
                "sha256:f6a7421da632fc01e8a3ecd19c3f7350258d82501a646747664bae9c6a87c731"
            ],
            "version": "==1.18.0"
        },
        "pandas": {
            "hashes": [
                "sha256:00dff3a8e337f5ed7ad295d98a31821d3d0fe7792da82d78d7fd79b89c03ea9d",
(Weggelassen)
                "sha256:ee50c2142cdcf41995655d499a157d0a812fce55c97d9aad13bc1eef837ed36c"
            ],
            "index": "pypi",
            "version": "==0.25.3"
        },
        "python-dateutil": {
            "hashes": [
                "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c",
                "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"
            ],
            "version": "==2.8.1"
        },
        "pytz": {
            "hashes": [
                "sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d",
                "sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be"
            ],
            "version": "==2019.3"
        },
        "six": {
            "hashes": [
                "sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd",
                "sha256:30f610279e8b2578cab6db20741130331735c781b56053c59c4076da27f06b66"
            ],
            "version": "==1.13.0"
        }
    },

Außerdem werden die Pakete und Versionen angegeben, von denen Pandas intern abhängen, z. B. numpy und python-dateutil.

Wenn Sie die Version angeben und installieren möchten, gehen Sie wie folgt vor.

$ pipenv install pandas==0.15.0 //Geben Sie eine bestimmte Version an

Die Methode zum Angeben der Version ist nicht auf die spezifische Version beschränkt, es ist jedoch möglich, die angegebene Version oder höher und die spezifische Version auszuschließen. Weitere Informationen finden Sie unter Offizielles Dokument.

Entfernen Sie die Verpackung

Verwenden Sie den Befehl uninstall, um das installierte Paket zu deinstallieren.

$ pipenv uninstall pandas

Dann werden sowohl Pipfile als auch Pipfile.lock gelöscht, sobald sie durch die Installation hinzugefügt werden.

  1. lock

Verwenden Sie den Befehl lock, um die Datei Pipfile.lock aus dem Inhalt der Pipfile zu aktualisieren.

$ pipenv lock

Insbesondere wenn Sie die Version bei der Installation von "pipenv" nicht angeben, verwenden Sie diesen Befehl beim Aktualisieren des Pakets.

  1. sync

Der Befehl sync wird verwendet, um den Inhalt von Pipfile.lock auf eine virtuelle Umgebung anzuwenden.

$ pipenv sync

Ich denke, dass dieser Befehl oft als Satz mit dem Befehl lock verwendet wird.

  1. update

Der Update-Befehl wird gleichzeitig gesperrt und synchronisiert.

$ pipenv update        //Tun Sie für alle Pakete
$ pipenv update pandas //Es ist auch möglich, das Paket anzugeben

Fügen Sie die Option "--dry-run" hinzu, um zu sehen, welche Pakete aktualisiert werden können (veraltet).

$ pipenv update --dry-run
✔ Success! 
//Alte Version (0.15.Ich habe Pandas von 0) gesetzt, also die neue Version (0).25.3) wird Ihnen sagen, dass es verfügbar ist
Skipped Update of Package pandas: 0.15.0 installed, 0.25.3 available.

Wenn Sie die Version zum Zeitpunkt der "pipenv-Installation" angeben, wird die Installation der neuen Version übersprungen, auch wenn keine "--dry-run" -Option vorhanden ist. Geben Sie in diesem Fall eine beliebige Version mit "pipenv install" an und führen Sie eine Überschreibinstallation durch.

  1. run

Verwenden Sie den Befehl run, um Befehle in einer virtuellen Umgebung auszuführen. Lassen Sie uns die Liste der installierten Pakete als Testversion anzeigen.

$ pipenv run pip list
Package         Version
--------------- -------
numpy           1.18.0 
pandas          0.15.0 
pip             19.3.1 
python-dateutil 2.8.1  
pytz            2019.3 
setuptools      43.0.0 
six             1.13.0 
wheel           0.33.6

Wenn Sie ein Skript in Pipfile registrieren, können Sie dieses Skript auch mit dem Befehl run aufrufen.

Pipfile


[scripts]
list = "pip list"
$ pipenv run list //Gleiches Ergebnis wie bei pipenv run pip list
  1. shell

Verwenden Sie den Shell-Befehl, um die virtuelle Umgebung aufzurufen.

$ pipenv shell
  1. clean

Wenn Ihre virtuelle Umgebung Pakete enthält, die nicht in Pipfile.lock definiert sind, können Sie diese mit dem Befehl clean aus der virtuellen Umgebung entfernen.

Versuchen Sie pipenv uninstall pandas nach pipenv install pandas, die zuvor veröffentlicht wurden, und führen Sie den Befehl clean mit den Paketen aus, von denen Pandas abhängig sind, die in der virtuellen Umgebung verbleiben.

$ pipenv run pip list 
Package         Version
--------------- -------
numpy           1.18.0 //Es gibt immer noch Pakete, von denen Pandas abhängt, wie zum Beispiel Numpy.
pip             19.3.1
python-dateutil 2.8.1  
pytz            2019.3 
setuptools      43.0.0 
six             1.13.0 
wheel           0.33.6 
$ pipenv clean //Laufen Sie sauber
Uninstalling six…
Uninstalling pytz…
Uninstalling python-dateutil…
Uninstalling numpy…
$ pipenv run pip list //Überprüfen Sie das Ergebnis der Reinigung
Package    Version
---------- -------
pip        19.3.1 
setuptools 43.0.0 
wheel      0.33.6 

Sie können sehen, dass die Pakete, von denen Pandas abhängig waren, ebenfalls fest deinstalliert sind.

  1. check

Der Befehl check prüft auf Sicherheitslücken, um festzustellen, ob die aktuelle Umgebung die Anforderungen von PEP 508 erfüllt.

$ pipenv check
  1. graph

Wenn Sie die Paketabhängigkeiten anzeigen möchten, verwenden Sie den Befehl graph.

$ pipenv graph
pandas==0.15.0 //Pandas ist numpy, Python-Es stellt sich heraus, dass es von Dateutil und Pytz abhängt
  - numpy [required: >=1.7.0, installed: 1.18.0]
  - python-dateutil [required: >=2, installed: 2.8.1]
    - six [required: >=1.5, installed: 1.13.0] // python-Es stellt sich heraus, dass Dateutil noch stärker von sechs abhängig ist
  - pytz [required: >=2011k, installed: 2019.3]

Zusammenfassung

Ich denke, das gibt Ihnen eine Vogelperspektive auf Pipenv. Es ist hartnäckig, aber ich werde das zugehörige Diagramm am Anfang noch einmal veröffentlichen.

スクリーンショット 2020-01-01 20.10.48.png

Andere Alternativen

Pipenv sieht aus wie all die guten Dinge, aber es scheint einige Nachteile zu haben, wie z. B. scharf zu sein, wenn es mit Docker und langsamer Installation kombiniert wird. Als weitere Alternative werde ich nach den Namen der folgenden Tools fragen, damit ich versuchen kann, sie bald zu berühren.

Recommended Posts

[In der Abbildung verstanden] Verwaltung der virtuellen Python-Umgebung durch Pipenv
Informationen zur virtuellen Umgebung von Python Version 3.7
Python Virtual Environment Pipenv
virtuelle Umgebung in Python
Ich möchte Python in der Umgebung von pyenv + pipenv unter Windows 10 verwenden
venv: Verwaltung der virtuellen Python-Umgebung
So entwickeln Sie in einer virtuellen Python-Umgebung [Memo]
Führen Sie die Python-Datei aus, nachdem Sie die virtuelle Python-Umgebung mit der Batch-Datei aktiviert haben
[Python] Die potenzielle Feldplanung von Python Robotics verstehen
Memorandum des Python-Paketverwaltungstools ez_setup
Lesen Sie die Standardausgabe eines Unterprozesses zeilenweise in Python
Installieren Sie Django in einer virtuellen Pipenv-Umgebung
[Verständnis in 3 Minuten] Der Beginn von Linux
Überprüfen Sie das Verhalten des Zerstörers in Python
Das Ergebnis der Installation von Python auf Anaconda
Lesen Sie die Datei Zeile für Zeile mit Python
Lesen Sie die Datei Zeile für Zeile mit Python
Grundlagen zum Ausführen von NoxPlayer in Python
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Auf der Suche nach dem schnellsten FizzBuzz in Python
Geben Sie die Anzahl der CPU-Kerne in Python aus
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
[Python] Ruft die Skalenbezeichnung der Figur ab / bearbeitet sie
Holen Sie sich den Aufrufer einer Funktion in Python
Passen Sie die Verteilung jeder Gruppe in Python an
Starten Sie Django in einer virtuellen Umgebung mit Pipenv
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Kopieren Sie die Liste in Python
Installieren Sie das Python-Paket in einer Offline-Umgebung
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Finden Sie die Lösung der Gleichung n-ter Ordnung mit Python
Die Geschichte des Lesens von HSPICE-Daten in Python
Arbeiten Sie in einer virtuellen Umgebung mit Python virtualenv.
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Lösen von Bewegungsgleichungen in Python (odeint)
[Python] Ein grobes Verständnis des Protokollierungsmoduls
Ausgabe in Form eines Python-Arrays
Verwenden Sie jupyter-lab, das in einer virtuellen Python-Umgebung (venv) installiert ist.
Suchen Sie nach dem Wert der Instanz in der Liste
Ich habe Pygame mit Python 3.5.1 in der Umgebung von pyenv unter OS X installiert
Teilt die Zeichenfolge durch die angegebene Anzahl von Zeichen. In Ruby und Python.
Abrufen der Unix-Zeit der von JST angegebenen Zeit unabhängig von der Zeitzone des Servers mit Python
Erstellen Sie ein Django-Projekt und eine Django-Anwendung in einer virtuellen Python-Umgebung und starten Sie den Server
Holen Sie sich das letzte Element des Arrays, indem Sie Zeichenfolgen in Python und PHP aufteilen
Sortieren Sie die Liste der Tupel in Python, indem Sie die aufsteigende / absteigende Reihenfolge mehrerer Schlüssel angeben
Betreiben Sie mongoDB von Python in einer Ubuntu-Umgebung. ① Einführung von mongoDB
So ermitteln Sie die Anzahl der Stellen in Python
Rund um die Installation des Python-Projektmanagement-Frameworks Trac
Vereinheitlichung der Python-Umgebung
○○ Probleme im Fachbereich Mathematik mit Optimierung lösen
[Python] Ruft die Liste der im Modul definierten Klassen ab
der Zen von Python
[Maschinelles Lernen] "Erkennung von Abnormalitäten und Erkennung von Änderungen" Zeichnen wir die Abbildung von Kapitel 1 in Python.
Die Geschichte von FileNotFound im Python open () -Modus = 'w'
Verwenden Sie CASA Toolkit in Ihrer eigenen Python-Umgebung
Lernen Sie das Entwurfsmuster "Chain of Responsibility" in Python
Implementieren Sie die Lösung der Riccati-Algebra in Python