Mit Python-Paketen können Sie große Systeme auflösen und ihre Module auf eine konsistente Weise organisieren, die Sie und andere Personen effizient nutzen und wiederverwenden können. Pythons Motto "Batteries Included" bedeutet, dass in der Standardbibliothek viele nützliche Pakete vorinstalliert sind.
Es gibt aber auch viele tolle Drittanbieter-Pakete, die Sie nutzen können. In diesem Lernprogramm erfahren Sie alles, was Sie über die genauen Pakete wissen müssen, wie Sie Module aus Paketen importieren, das integrierte Paket in der Python-Standardbibliothek kennenlernen und Pakete von Drittanbietern installieren.
Bevor wir über Pakete sprechen können, lassen Sie uns über Module sprechen. Module sind die Quelldateien mit der Erweiterung * .py, in die Sie (und alle anderen) die Funktionen und Klassen einfügen, aus denen Ihr Programm besteht. Pakete sind die Manifestation des hierarchischen Namespaces-Konzepts von Python. Um aus dem Zen von Python zu zitieren:
"Namensräume sind eine hupende großartige Idee - machen wir mehr davon!"
Um das gesamte Zen von Python anzuzeigen, geben Sie ein importiere das
in einer interaktiven Python-Sitzung:
Import the Zen of Python von Tim Peters Schön ist besser als hässlich. Explicit ist besser als implizit. Einfach ist besser als komplex. Komplex ist besser als kompliziert. Flat ist besser als verschachtelt. Sparse ist besser als dicht. Lesbarkeit zählt. Sonderfälle sind nicht speziell genug, um die Regeln zu brechen. Obwohl Praktikabilität die Reinheit übertrifft. Fehler sollten niemals lautlos vergehen. Sofern nicht ausdrücklich zum Schweigen gebracht. In Anbetracht der Mehrdeutigkeit lehnen Sie die Versuchung ab, zu raten. Es sollte einen - und vorzugsweise nur einen - offensichtlichen Weg geben, dies zu tun. Obwohl dies auf den ersten Blick nicht offensichtlich ist, es sei denn, Sie sind Niederländer. Jetzt ist besser als nie. Obwohl nie besser ist als jetzt *. Wenn die Implementierung schwer zu erklären ist, ist das eine schlechte Idee. Wenn die Implementierung leicht zu erklären ist, kann dies eine gute Idee sein. Namensräume sind eine großartige Idee, lass uns mehr davon machen!
Namensräume helfen bei der Organisation von Code und der Vermeidung von Namenskonflikten. Dies ist kritisch, wenn mehrere Personen zusammenarbeiten oder wenn Pakete verwendet werden, die von anderen Personen entwickelt wurden.
Während Pakete eine Hierarchie von Unterpaketen und Modulen darstellen, handelt es sich hierbei um Dateien, die nicht auf Dateisystemen basieren, wobei Pakete und Unterpakete Verzeichnisse und Unterverzeichnisse sind. Es ist viel flexibler als das.
Schauen wir uns ein Paket mit dem Namen "ansible" an. Es ist kein Paket aus der Standardbibliothek. Später erfahren Sie, wie Sie Pakete von Drittanbietern finden und installieren können. Jetzt schauen wir uns einfach die Verzeichnisstruktur an.
Die Pakete werden normalerweise im Site-Packages-Verzeichnis des Python-Interpreters installiert, das sich irgendwo (je nach Version, Betriebssystem und Verteilung) unter "lib" befindet. Auf dem Mac für Python 2.7 befindet es sich in "
tree ansible -L 1 ansible ├── __init__.py ├── cli ├── ├── ├── ├── ├── ├── ├── ├── ├── ├── ├── ├── ├── ├── ├── ├── ├── ├── ├── ├── ├── ├── ├── ├── utor utor utor utor utor utor utor utor utor utor utor utor utor ├── module ├── parsing ├── playbook ├── plugins ├── vorlage ├── utils └── vars 15 verzeichnisse, 2 dateien
Es gibt zwei Module und 15 Verzeichnisse. Jedes Verzeichnis ist ein Unterpaket des Hauptpakets. Wenn Sie in das Verzeichnis ansible / utils schauen, können Sie sehen, dass es zusätzliche Module und noch ein weiteres Unterpaket enthält:
baum ansible / utils -L 1 ansible / utils ├── __init__.py ├── boolean.py ├── cmd_functions.py color.py ├── debug.py ├── display.py ├── verschlüsseln .py ├── hashing.py ├── listify.py ├── module_docs.py ├── module_docs_fragments ├── path.py ├── shlex.py ├── unicode.py └── vars.py 1-Verzeichnis 14 Dateien
Wenn Sie ein Modul importieren, durchläuft Python einen Suchalgorithmus, der auf dem Suchpfad basiert. Hierbei handelt es sich um eine Liste von Verzeichnissen, um die Suche zu starten. Der Suchpfad ist eine Liste der verfügbaren Verzeichnisse sys.path
, und Sie können ihn dynamisch bearbeiten (Elemente im Suchpfad hinzufügen, entfernen oder verschieben). Das Site-Packages-Verzeichnis ist immer vorhanden.
Um das Modul path.py von ansible / utils zu importieren, müssen Sie den folgenden Befehl verwenden:
import ansible.utils.path
Wenn Sie auch das Standardmodul os.oath verwenden möchten, verwenden Sie den folgenden Befehl:
os.path importieren
Jetzt können Sie eines oder beide Pfadmodule ohne Konflikte aufgrund des unterschiedlichen Namespaces verwenden, zu dem sie gehören.
Die Standardbibliothek enthält viele Pakete. Es lohnt sich, es zu erkunden, wann immer Sie eine Aufgabe erledigen müssen und Sie nicht sicher sind, wie. Es besteht eine sehr hohe Wahrscheinlichkeit, dass für allgemeine Aufgaben wie Mathematik, Shell-Integration, Betriebssystemintegration, Zeichenfolgenmanipulation, Vernetzung und gängige Dateiformate ein gut entworfenes, leistungsstarkes und getestetes Paket in der Standardbibliothek enthalten ist.
Sie können den Standardbibliothekpaketen wirklich vertrauen, da es sehr schwierig ist, in die Standardbibliothek zu gelangen. Entweder wurde das Paket von Pythons Kernentwicklern entwickelt oder es wurde umfangreich überarbeitet und häufig als Drittanbieter-Bibliothek verwendet, bevor es in die Standardbibliothek aufgenommen wurde.
Hier sind alle Pakete in der Standardbibliothek nach Themen geordnet.
Die Standardbibliothek ist großartig, aber es werden häufig einige spezielle Funktionen benötigt, die nicht Standard sind. Das bedeutet nicht, dass Sie es von Grund auf neu schreiben müssen. Python hat eine lebendige und aktive Community, die viel Code entwickelt und freigibt. Geben Sie PyPI ein - den Python Package Index. PyPI hostet alle öffentlich verfügbaren Pakete und bietet eine zentrale Anlaufstelle zum Durchsuchen.
PyPI organisiert die Pakete in einem durchsuchbaren Index. Sie können nach Thema, Umgebung, Framework, Entwicklung, Status, Zielgruppe, Lizenz, natürlicher Sprache, Programmiersprache (ja, es gibt Python-Pakete, die viele Programmiersprachen unterstützen) und Betriebssystemen suchen und suchen.
Es gibt auch einen Unterschied zwischen Python 2- und Python 3-Paketen, und anhand der Anzahl der letzten Downloads können Sie feststellen, wie beliebt ein Paket ist. Das Paket "ansible" ist beispielsweise auf PyPI verfügbar, und hier sind seine Metadaten:
Downloads (All Versions): 5528 Downloads am letzten Tag 72037 Downloads in der letzten Woche 289967 Downloads im letzten Monat Autor: Ansible, Inc. Homepage: http://ansible.com/ Bug Tracker: http: // github. com / ansible / ansible / Lizenz: GPLv3 Kategorien Entwicklungsstatus :: 5 - Produktion / Stabile Umgebung :: Konsole Zielgruppe :: Entwickler Zielgruppe :: Zielgruppe Informationstechnologie :: Systemadministratoren Lizenz :: OSI Approved :: GNU General Public Lizenz v3 oder höher (GPLv3 +) Natural Language :: Englisch Betriebssystem :: POSIX-Programmiersprache :: Python :: 2.6 Programmiersprache :: Python :: 2.7 Thema :: System :: Installation / Setup Thema :: System :: Systemadministration Thema :: Dienstprogramme Paketindex Besitzer: James.Laska, jimi, ansible Paketindex Betreuer: mpdehaan, badger DOAP-Datensatz: ansible-2.0.0.2.xml
Es gibt zwei Möglichkeiten, Pakete von PyPI zu installieren. Sie können das Paket herunterladen und anschließend ausführen python setup.py installieren
. Die moderne Methode ist jedoch die Verwendung von Pip, Setuptools und Rad. Pip steht für Pip Install-Packages (ja, eines dieser Akronyme) und ist Ihr Frontend für die Installation. Wenn Sie Python 2> = 2.7.9 oder Python 3> = 3.4 von python.org installiert haben, haben Sie bereits pip und setuptools, müssen jedoch auf die neueste Version aktualisieren: pip installieren -U pip setuptools
oder python -m pip install -U pip setuptools
unter Windows.
Rad zum Einbauen des Rades verwenden: Rad montieren Rad
.
Wenn Sie eine frühere Version von Python verwenden, ziehen Sie ein Upgrade in Betracht. Wenn Sie nicht in der Lage sind, müssen Sie Pip, Setuptools und Rad selbst installieren. Überprüfen Sie die Anweisungen.
Python-Pakete werden immer in einer Umgebung installiert. Eine gängige Praxis, die ich hier nicht behandeln werde, ist die Verwendung von virtuellen Umgebungen zur Verwaltung mehrerer unabhängiger Python-Installationen mit unterschiedlichen Interpreten und / oder verschiedenen installierten Paketen.
Die Python-Verpackungsbehörde enthält eine Vielzahl von Anleitungen zu den besten Vorgehensweisen rund um das Verpacken. Dies ist wichtig, weil es sich um einen aktiven Entwicklungsbereich handelt und Empfehlungen rasch entwickelt werden.
Wenn Sie etwas Besonderes tun möchten, beispielsweise die Installation von Paketen aus alternativen Repositorys anstelle von PyPI oder die Verwendung von Pip auf raffiniertere Weise, finden Sie großartige Diskussionen und praktische Tipps.
Wenn Sie ein Python-Anfänger sind, lernen Sie die Kernsprache und haben Spaß daran, damit zu spielen. Bald entdecken Sie die Standardbibliothek, und wenn Sie mehr Erfahrung sammeln, profitieren Sie immer mehr von ihrem Reichtum.
Der nächste Schritt in Ihrer Entwicklung als Pythonista besteht darin, die enorme Faszination, die die Python-Community auf PyPI ausübt, in Ihre Systeme zu integrieren. Pakete als Bereitstellungseinheit für wiederverwendbaren Python-Code ermöglichen dieses Ökosystem.