Präsentation

Python-Anwendungen werden regelmäßig Bundles und Module verwenden, die nicht zur Standardbibliothek gehören. Anwendungen werden von Zeit zu Zeit eine besondere Anpassung einer Bibliothek benötigen, weil die Anwendung möglicherweise die Behebung eines bestimmten Fehlers erfordert oder die Anwendung unter Verwendung einer veralteten Form der Bibliotheksschnittstelle erstellt werden muss.

Dies bedeutet, dass es unter Umständen nicht machbar ist, dass eine Python-Einrichtung die Voraussetzungen für jede Anwendung erfüllt. Für den unwahrscheinlichen Fall, dass Anwendung A die Anpassung 1.0 eines bestimmten Moduls benötigt, Anwendung B jedoch die Form 2.0, sind die Voraussetzungen zu diesem Zeitpunkt noch nicht erfüllt, und die Einführung der Form 1.0 oder 2.0 wird dazu führen, dass eine Anwendung nicht mehr lauffähig ist.

Die Antwort auf dieses Problem besteht darin, eine virtuelle Domäne zu erstellen, einen unabhängigen Registrierungsbaum, der eine Python-Einrichtung für eine bestimmte Form von Python enthält, zusätzlich zu einigen der zusätzlichen Bundles.

Verschiedene Anwendungen wären dann in der Lage, verschiedene virtuelle Situationen zu nutzen. Um den vorherigen Fall kollidierender Notwendigkeiten zu ermitteln, kann Anwendung A eine eigene virtuelle Bedingung mit der Variante 1.0 eingeführt haben, während Anwendung B eine weitere virtuelle Bedingung mit der Form 2.0 hat. Für den Fall, dass Anwendung B eine Bibliothek benötigt, die auf die Variante 3.0 verschoben werden muss, wird dies die Situation von Anwendung A nicht beeinflussen.

12.2. Virtuelle Situationen erstellen

Das Modul, das zum Erstellen und Überwachen virtueller Situationen verwendet wird, heißt venv. venv stellt normalerweise die neueste Variante von Python vor, die Ihnen zur Verfügung steht. Für den Fall, dass Sie verschiedene Anpassungen von Python auf Ihrem Framework haben, können Sie eine bestimmte Python-Form wählen, indem Sie Python3 oder eine beliebige andere Wiedergabeversion ausführen.

Um eine virtuelle Domäne zu erstellen, legen Sie sich auf eine Registry fest, in die Sie sie eintragen müssen, und führen Sie das venv-Modul als Inhalt mit dem Indexweg aus:

python3 -m venv tutorial-dev

Dadurch wird die Lehrübung zum env-Katalog für den Fall, dass sie nicht existiert, und darüber hinaus werden darin Indizes erstellt, die ein Duplikat des Python-Übersetzers, die Standardbibliothek und verschiedene Begleitdokumente enthalten.

Ein typischer Katalogbereich für eine virtuelle Situation ist .venv. Dieser Name hält den Katalog normalerweise in Ihrer Schüssel verdeckt und dementsprechend abseits des ausgetretenen Pfades und gibt ihm einen Namen, der verdeutlicht, warum die Registry existiert. Er nimmt ebenfalls Konflikte mit .env-Bedingungsvariablendefinitionsdatensätzen vorweg, die von einigen Tooling-Backups unterstützt werden.

Wenn Sie eine virtuelle Situation gemacht haben, können Sie diese auslösen.

Unter Windows ausführen:

tutorial-env\Skripte\aktivieren.bat

Unter Unix oder MacOS ausführen:

quelle tutorial-env/bin/aktivieren

(Dieses Skript ist für die Bash-Shell geschrieben. Wenn Sie die csh- oder Fish-Shells verwenden, gibt es alternative activate.csh- und activate.fish-Skripte, die Sie stattdessen verwenden sollten)

Wenn Sie den virtuellen Zustand initiieren, ändern Sie die Anweisungen Ihrer Shell, um zu zeigen, welchen virtuellen Zustand Sie verwenden, und ändern die Natur mit dem Ziel, dass das Ausführen von Python Ihnen diese spezifische Form und Etablierung von Python bringt. Zum Beispiel:

(tutorium-dev) $ python

Python 3.5.1 (Voreinstellung, 6. Mai 2016, 10:59:36)

  …

>>> sys importieren

>>> sys.pfad

[”, ‘/usr/local/lib/python35.zip’, …,

‘~/envs/tutorial-env/lib/python3.5/site-Pakete’]

Pakete mit pip verwalten

Beaufsichtigung von Bündeln mit Pip

Sie können Bundles mit Hilfe eines Programms namens pip einführen, überholen und ausschließen. Selbstverständlich wird pip Bundles aus der Python-Bundle-Datei <https://pypi.org> einführen. Sie können den Python-Bundle-Record durchsehen, indem Sie ihn in Ihrem Internet-Browser aufrufen, oder Sie können das eingeschränkte Jagd-Highlight von pip verwenden:

(tutorial-dev) $ pip suche astronomie

skyfield – Elegante Astronomie für Python

gary – Galaktische Astronomie und Gravitationsdynamik.

novas – Die Astronomie-Bibliothek des Marine-Observatoriums der Vereinigten Staaten NOVAS

astroobs – Bietet Astronomie-Ephemeriden zur Planung von Teleskopbeobachtungen

PyAstronomy – Eine Sammlung von astronomiebezogenen Werkzeugen für Python.

pip hat eine Reihe von Unterbefehlen: “search”, “install”, “uninstall”, “freeze”, usw. (Lesen Sie die Anleitung zur Installation von Python-Modulen, um die vollständige Dokumentation für pip zu erhalten).

Sie können die neueste Version eines Pakets installieren, indem Sie den Namen des Pakets angeben:

(tutorial-dev) $ pip novas installieren

Sammeln von Novas

  Herunterladen von novas-3.1.1.3.tar.gz (136kB)

Installieren gesammelter Pakete: novas

  Ausführen der setup.py-Installation für novas

Erfolgreich installierte novas-3.1.1.3

Sie können auch eine bestimmte Version eines Pakets installieren, indem Sie den Paketnamen gefolgt von == und die Versionsnummer angeben:

(tutorial-dev) $ pip-Installationsanforderungen==2.6.0

Sammeln von Anfragen===2.6.0

  Zwischengespeicherte Anfragen verwenden-2.6.0-py2.py3-none-any.whl

Installieren gesammelter Pakete: Anfragen

Erfolgreich installierte Anfragen-2.6.0

Falls Sie diese Reihenfolge erneut ausführen, wird pip sehen, dass die erwähnte Variante ab sofort eingeführt ist und untätig bleibt. Sie können eine alternative Anpassungsnummer angeben, um diese Form zu erhalten, oder Sie können pip introduce – move up ausführen, um das Bundle auf die neueste Variante zu aktualisieren:

tutorial-dev) $ pip install –upgrade-Anfragen

Sammeln von Anfragen

Installieren gesammelter Pakete: Anfragen

  Vorhandene Installation gefunden: Anforderungen 2.6.0

    Deinstallation von Anfragen-2.6.0:

      Erfolgreich deinstallierte Anfragen-2.6.0

Erfolgreich installierte Anfragen-2.7.0

pip uninstall, gefolgt von einem oder mehreren Paketnamen, entfernt die Pakete aus der virtuellen Umgebung.

pip show zeigt Informationen über ein bestimmtes Paket an:

(tutorial-dev) $ pip show requests

Metadaten-Version: 2.0

Name: Anfragen

Version: 2.7.0

Zusammenfassung: Python HTTP für Menschen.

Startseite: http://python-requests.org

Autor: Kenneth Reitz

Autoren-E-Mail: me@kennethreitz.com

Lizenz: Apache 2.0

Standort: /Benutzer/akuchling/envs/tutorial-env/lib/python3.4/site-Pakete

Erfordert:

pip-Liste werden alle in der virtuellen Umgebung installierten Pakete angezeigt:

(tutorial-dev) $ pip liste

Novas (3.1.1.3)

numpy (1.9.2)

pip (7.0.3)

Anfragen (2.7.0)

Setup-Werkzeuge (16.0)

pip freeze wird eine ähnliche Liste der installierten Pakete erzeugen, aber die Ausgabe verwendet das Format, das pip install erwartet. Eine übliche Konvention ist es, diese Liste in eine requirements.txt-Datei zu packen:

(tutorial-dev) $ pip freeze > anforderungen.txt

(tutorial-dev) $ cat requirements.txt

novas==3.1.1.1.3

numpy===1.9.2

Anfragen===2.7.0

Die requirements.txt kann dann der Versionskontrolle übergeben und als Teil einer Anwendung ausgeliefert werden. Benutzer können dann alle erforderlichen Pakete mit install -r installieren:

(tutorial-dev) $ pip install -r requirements.txt

Sammeln von novas==3.1.1.3 (aus -r requirements.txt (Zeile 1))

  …

Sammeln von numpy==1.9.2 (aus -r requirements.txt (Zeile 2))

  …

Sammeln von Anforderungen==2.7.0 (aus -r requirements.txt (Zeile 3))

  …

Installieren gesammelter Pakete: novas, numpy, Anfragen

  Ausführen der setup.py-Installation für novas

Erfolgreich installierte novas-3.1.1.3 numpy-1.9.2 requests-2.7.0