Rheinwerk Computing < openbook >

 
Inhaltsverzeichnis
1 Einleitung
2 Die Programmiersprache Python
Teil I Einstieg in Python
3 Erste Schritte im interaktiven Modus
4 Der Weg zum ersten Programm
5 Kontrollstrukturen
6 Dateien
7 Das Laufzeitmodell
8 Funktionen, Methoden und Attribute
9 Informationsquellen zu Python
Teil II Datentypen
10 Das Nichts – NoneType
11 Operatoren
12 Numerische Datentypen
13 Sequenzielle Datentypen
14 Zuordnungen
15 Mengen
16 Collections
17 Datum und Zeit
18 Aufzählungstypen – Enum
Teil III Fortgeschrittene Programmiertechniken
19 Funktionen
20 Modularisierung
21 Objektorientierung
22 Ausnahmebehandlung
23 Iteratoren
24 Kontextobjekte
25 Manipulation von Funktionen und Methoden
Teil IV Die Standardbibliothek
26 Mathematik
27 Kryptografie
28 Reguläre Ausdrücke
29 Schnittstelle zu Betriebssystem und Laufzeitumgebung
30 Kommandozeilenparameter
31 Dateisystem
32 Parallele Programmierung
33 Datenspeicherung
34 Netzwerkkommunikation
35 Debugging und Qualitätssicherung
36 Dokumentation
Teil V Weiterführende Themen
37 Anbindung an andere Programmiersprachen
38 Distribution von Python-Projekten
39 Grafische Benutzeroberflächen
40 Python als serverseitige Programmiersprache im WWW – ein Einstieg in Django
41 Wissenschaftliches Rechnen
42 Insiderwissen
43 Von Python 2 nach Python 3
A Anhang
Stichwortverzeichnis

Download:
- Beispielprogramme, ca. 464 KB

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Python 3 von Johannes Ernesti, Peter Kaiser
Das umfassende Handbuch
Buch: Python 3

Python 3
Pfeil 38 Distribution von Python-Projekten
Pfeil 38.1 Eine Geschichte der Distributionen in Python
Pfeil 38.1.1 Der klassische Ansatz – distutils
Pfeil 38.1.2 Der neue Standard – setuptools
Pfeil 38.1.3 Der Paketindex – PyPI und pip
Pfeil 38.2 Erstellen von Distributionen – setuptools
Pfeil 38.2.1 Schreiben des Moduls
Pfeil 38.2.2 Das Installationsskript
Pfeil 38.2.3 Erstellen einer Quellcodedistribution
Pfeil 38.2.4 Erstellen einer Binärdistribution
Pfeil 38.2.5 Distributionen installieren
Pfeil 38.2.6 Eigenständige Distributionen erstellen
Pfeil 38.2.7 Erstellen von EXE-Dateien – cx_Freeze
Pfeil 38.3 Der Python-Paketmanager – pip
Pfeil 38.4 Der Paketmanager conda
Pfeil 38.5 Lokalisierung von Programmen – gettext
Pfeil 38.5.1 Beispiel für die Verwendung von gettext
Pfeil 38.5.2 Erstellen des Sprachkompilats
 
Zum Seitenanfang

38    Distribution von Python-Projekten Zur vorigen ÜberschriftZur nächsten Überschrift

Es ist anzunehmen, dass Sie im Laufe dieses Buchs bereits das eine oder andere eigenständige Python-Programm geschrieben haben. Vielleicht haben Sie sogar schon ein Programm oder Modul in Python geschrieben, das auch für andere Anwender von Nutzen sein könnte. In diesem Moment stellt sich die Frage, wie ein Python-Programm oder -Modul adäquat veröffentlicht werden kann. Idealerweise sollte es so geschehen, dass der Benutzer kein Experte sein muss, um es zu installieren.

Zunächst werden wir die bestehenden Ansätze zur Distribution von Python-Paketen zusammenfassen und dann in Abschnitt 38.2 ausführlich auf das Drittanbieterpaket setuptools eingehen. Zum Schluss, in Abschnitt 38.5, beleuchten wir einen weiteren wichtigen Aspekt beim Erzeugen von Distributionen: die Lokalisierung von Programmen.

 
Zum Seitenanfang

38.1    Eine Geschichte der Distributionen in Python Zur vorigen ÜberschriftZur nächsten Überschrift

Bei der Distribution von Software geht es darum, die relevanten Daten, beispielsweise Bibliotheken, ausführbare Dateien oder auch Quellcode, in einer Distribution oder einem Paket anzubieten, das für den Benutzer komfortabel zu installieren ist. Grundsätzlich unterscheidet man zwei Typen von Distributionen:

  • Eine Quellcodedistribution (engl. source distribution) enthält keine vorkompilierten Daten, sondern nur den Quellcode der angebotenen Software. Dieser Quellcode muss auf der Benutzerseite kompiliert werden. Eine Quellcodedistribution hat den Vorteil, dass sie unverändert auf allen unterstützten Plattformen verwendet werden kann.
  • Eine Binärdistribution (engl. binary distribution) enthält ein Kompilat der Software. Aus diesem Grund sind Binärdistributionen in der Regel plattformabhängig, es müssen also für viele Zielplattformen eigene Distributionen erstellt werden. Der Vorteil einer Binärdistribution liegt in ihrer einfachen Installation: Die enthaltenen Dateien müssen nur an die richtige Stelle im System kopiert werden. Insbesondere ist kein Build-Schritt notwendig.

In der Python-Welt existiert eine verwirrende Vielfalt von Ansätzen zur Erzeugung von Distributionen. In den folgenden Abschnitten stellen wir Ihnen die wichtigsten dieser Ansätze vor.

 
Zum Seitenanfang

38.1.1    Der klassische Ansatz – distutils Zur vorigen ÜberschriftZur nächsten Überschrift

Das Paket distutils ist in der Standardbibliothek enthalten und war für lange Zeit der Standard zur Distribution von Python-Software. Zum Erstellen einer Distribution wird ein Installationsskript namens setup.py angelegt, das die Eigenschaften der Distribution beschreibt. Dazu gehören beispielsweise Metadaten wie der Urheber oder die Lizenz und eine Liste der Dateien, die in die Distribution aufgenommen werden soll. Durch das Ausführen des Installationsskripts kann eine Quellcode- oder Binärdistribution erzeugt werden:

  • Eine Quellcodedistribution enthält ihrerseits das Installationsskript setup.py, das in diesem Fall verwendet werden kann, um die Software auf dem Zielsystem zu installieren.
  • Eine Binärdistribution wird in Form eines Windows-Installers oder eines RPM-Pakets für bestimmte Linux-Distributionen erstellt.

Das Paket distutils findet auch heute noch Verwendung und kann, da es in der Standardbibliothek enthalten ist, auch bedenkenlos verwendet werden. Es hat aber den großen Nachteil, dass Abhängigkeiten zwischen Distributionen nicht berücksichtigt werden können. Dies ist einer der Gründe, die zur Entwicklung von setuptools geführt haben.

 
Zum Seitenanfang

38.1.2    Der neue Standard – setuptools Zur vorigen ÜberschriftZur nächsten Überschrift

Das Drittanbieterpaket setuptools basiert auf distutils, wird also in ähnlicher Weise verwendet und ist kompatibel zu distutils-Installationsskripten. Es übertrifft den Funktionsumfang von distutils in einigen wichtigen Punkten, was es zum neuen Standard bei der Distribution von Python-Software gemacht hat:

  • Mit setuptools können sogenannte Python Eggs erstellt werden. Das sind spezielle Distributionen, erkennbar an der Endung .egg, die zusätzliche Metadaten enthalten, insbesondere Abhängigkeiten zu anderen Eggs. Python Eggs müssen nicht installiert werden, sondern können direkt eingebunden werden.
    Das Prinzip von Eggs in Python ist mit dem von JAR-Dateien in Java vergleichbar.
  • Mithilfe von Python Eggs ist es möglich, Namensraumpakete zu erstellen. Das sind Metapakete, die aus einer Menge weiterer Pakete bestehen.
  • Das in setuptools enthaltene Tool EasyInstall kann Paketabhängigkeiten auflösen und eventuell fehlende Pakete installieren oder aktualisieren. Dazu verwendet es den Python-Paketindex PyPI (siehe Abschnitt 38.1.3).

Da es sich bei setuptools um ein Drittanbieterpaket handelt, das nicht in der Standardbibliothek enthalten ist, muss es vor dem Erstellen und Installieren von Distributionen installiert sein. Die Installation von setuptools erfolgt über ein sogenanntes Bootstrap-Skript namens ez_setup.py, das Sie sich von der Projektseite[ 172 ](https://pypi.python.org/pypi/setuptools) herunterladen können. Dieses Bootstrap-Skript kann auch in Distributionen eingebunden werden, damit bei der Installation automatisch setuptools heruntergeladen und mit installiert wird, sollte es nicht bereits vorhanden sein.

[»]  Hinweis

Python Eggs werden in Zukunft durch das neuere und vollständig standardisierte Distributionsformat Python Wheel ersetzt. Am grundlegenden Arbeitsablauf ändert sich jedoch nichts, auch Wheels können mit setuptools erzeugt werden.

 
Zum Seitenanfang

38.1.3    Der Paketindex – PyPI und pip Zur vorigen ÜberschriftZur nächsten Überschrift

Der Python Package Index PyPI ist eine von der Python Software Foundation verwaltete Sammlung von Python-Paketen, die unter https://pypi.python.org abrufbar ist. Er ist vergleichbar mit dem bekannteren CPAN für die Programmiersprache Perl.

Die im PyPI aufgeführten Pakete können mit einem kompatiblen Paketmanager bequem heruntergeladen und installiert werden. Dabei installiert bzw. aktualisiert der Paketmanager gegebenenfalls Abhängigkeiten. Neben dem bereits angesprochenen Paketmanager EasyInstall steht auch der fortschrittlichere Paketmanager pip, der in Abschnitt 38.3 vorgestellt wird, zur Verfügung.

Es ist nach einer Anmeldung auch möglich, eigene Pakete in den PyPI einzutragen.

 


Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Python 3 Python 3
Jetzt Buch bestellen

 Buchempfehlungen
Zum Rheinwerk-Shop: Einstieg in Python
Einstieg in Python


Zum Rheinwerk-Shop: Python. Der Grundkurs
Python. Der Grundkurs


Zum Rheinwerk-Shop: Algorithmen mit Python
Algorithmen mit Python


Zum Rheinwerk-Shop: Objektorientierte Programmierung
Objektorientierte Programmierung


Zum Rheinwerk-Shop: Raspberry Pi. Das umfassende Handbuch
Raspberry Pi. Das umfassende Handbuch


Zum Rheinwerk-Shop: Roboter-Autos mit dem Raspberry Pi
Roboter-Autos mit dem Raspberry Pi


Zum Rheinwerk-Shop: Neuronale Netze programmieren mit Python
Neuronale Netze programmieren mit Python


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo

 
 


Copyright © Rheinwerk Verlag GmbH 2020
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 
[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern