Hitchhiker's Guide für Python - Kenneth Reitz - E-Book

Hitchhiker's Guide für Python E-Book

Kenneth Reitz

0,0

Beschreibung

Sind Sie bereit, ein echter Pythonista zu werden? Dann wird dieses Buch Ihr treuer Begleiter. Es bietet geballtes Insider-Know-how zu Best Practices und den bevorzugten Werkzeugen der Python-Community. Sie werden Ihre Python-Kenntnisse entscheidend verbessern – ob Sie einfach nur neugierig sind, als Normalsterblicher zu Open-Source-Projekten beitragen oder ein Unternehmen rund um Python aufbauen möchten. Dieses Buch wurde im Rahmen eines Gemeinschaftsprojekts von über einhundert Mitgliedern der Python-Community geschrieben. In Teil 1 geht es um das Einrichten der Python-Umgebung (Interpreter, Python-Installation, Texteditor, IDE). Dann tauchen Sie in Beispiel-Code ein, der den Python-Stil mustergültig umsetzt. Teil 3 macht Sie mit Bibliotheken vertraut, die von der Python-Community bevorzugt genutzt werden. - Entwickeln Sie besseren Python-Code, indem Sie Stil, Konventionen, Idiome und Fallstricke kennenlernen. - Sehen Sie sich exzellente Open-Source-Codebeispiele ausgewählter Python-Bibliotheken an. - Studieren Sie Best Practices für die Paketierung und Distribution von Python-Code. - Erkunden Sie Pythons Bibliotheken für die Benutzer-Interaktion – von Konsolenanwendungen über GUIs bis hin zu Webapplikationen. - Lernen Sie Tools für die Systemadministration sowie das Interfacing mit C- und C++-Bibliotheken kennen und verbessern Sie die Geschwindigkeit von Python. - Arbeiten Sie mit Netzwerk-Bibliotheken für asynchrone Aktionen, Serialisierung und Kryptografie. - Lernen Sie Bibliotheken zur Datenpersistenz und -manipulation kennen, darunter auch Werkzeuge zur Bild- und Audioverarbeitung. Prägnant und meinungsstark nimmt Sie der Hitchhiker's Guide mit auf eine Pro-Tour durch das Python-Universum. Raymond Hettinger, Python Core Developer

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 450

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Zu diesem Buch – sowie zu vielen weiteren O’Reilly-Büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei oreilly.plus+:

www.oreilly.plus

Hitchhiker's Guide für Python

Best Practices für Programmierer

Kenneth Reitz und Tanya Schlusser

Deutsche Übersetzungvon Peter Klicman

Kenneth Reitz und Tanya Schlusser

Lektorat: Ariane Hesse

Übersetzung: Peter Klicman

Fachgutachten: Dr. Kristian Rother

Korrektorat: Sibylle Feldmann, www.richtiger-text.de

Satz: III-satz, www.drei-satz.de

Herstellung: Susanne Bröckelmann

Umschlaggestaltung: Michael Oréal, www.oreal.de

Druck und Bindung: M.P. Media-Print Informationstechnologie GmbH, 33100 Paderborn

www.mediaprint-druckerei.de

Bibliografische Information Der Deutschen Nationalbibliothek

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

ISBN:

Print978-3-96009-045-8

PDF978-3-96010-327-1

ePub978-3-96010-328-8

mobi978-3-96010-329-5

1. Auflage 2017

Dieses Buch erscheint in Kooperation mit O’Reilly Media, Inc. unter dem Imprint »O’REILLY«. O’REILLY ist ein Markenzeichen und eine eingetragene Marke von O’Reilly Media, Inc. und wird mit Einwilligung des Eigentümers verwendet.

Copyright © 2017 dpunkt.verlag GmbH

Wieblinger Weg 17

69123 Heidelberg

Authorized German translation of the English edition of The Hitchhiker’s Guide to Python, 1st Edition, ISBN 9781491933176 © 2016 Kenneth Reitz and Tanya Schlusser.

This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to sell the same.

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.

Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.

Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und deren Folgen.

5 4 3 2 1 0

Inhalt

Vorwort

Teil 1Einführung

1Einen Interpreter wählen

Stand der Dinge: Python 2 versus Python 3

Empfehlungen

Also … Python 3?

Implementierungen

CPython

Stackless

PyPy

Jython

IronPython

PythonNet

Skulpt

MicroPython

2Python richtig installieren

Python unter Mac OS X installieren

Setuptools und pip

virtualenv

Python unter Linux installieren

Setuptools und pip

Entwicklungswerkzeuge

virtualenv

Python unter Windows installieren

Setuptools und pip

virtualenv

Kommerzielle Python-Distributionen

3Ihre Entwicklungsumgebung

Texteditoren

Sublime Text

Vim

Emacs

TextMate

Atom

Code

IDEs

PyCharm/IntelliJ IDEA

Aptana Studio 3/Eclipse + LiClipse + PyDev

WingIDE

Spyder

NINJA-IDE

Komodo IDE

Eric (die Eric Python IDE)

Visual Studio

Interaktive Tools

IDLE

IPython

bpython

Isolationstools

Virtuelle Umgebungen

pyenv

Autoenv

virtualenvwrapper

Buildout

Conda

Docker

Teil 2Wir legen los

4Guten Code schreiben

Codestil

PEP 8

PEP 20 (alias The Zen of Python)

Allgemeine Empfehlungen

Konventionen

Idiome

Typische Fallstricke

Ihr Projekt strukturieren

Module

Pakete

Objektorientierte Programmierung

Dekoratoren

Dynamische Typisierung

Veränderliche und unveränderliche Typen

Vendorizing Dependencies

Ihren Code testen

Tipps für das Testen

Test-Grundlagen

Beispiele

Weitere beliebte Tools

Dokumentation

Projektdokumentation

Projektpublikation

Docstring versus Blockkommentare

Logging

Logging in einer Bibliothek

Logging in einer Anwendung

Wahl einer Lizenz

Upstream-Lizenzen

Optionen

Ressourcen zum Thema Lizenzierung

5Guten Code lesen

Gemeinsamkeiten

HowDoI

Eine einzelne Skriptdatei lesen

Strukturbeispiele aus HowDoI

Stilbeispiele aus HowDoI

Diamond

Eine größere Anwendung lesen

Strukturbeispiele aus Diamond

Stilbeispiele aus Diamond

Tablib

Eine kleine Bibliothek lesen

Strukturbeispiele aus Tablib

Stilbeispiele aus Tablib

Requests

Eine größere Bibliothek lesen

Strukturbeispiele aus Requests

Stilbeispiele aus Requests

Werkzeug

Code in einem Toolkit lesen

Stilbeispiele aus Werkzeug

Strukturbeispiele aus Werkzeug

Flask

Code in einem Framework lesen

Stilbeispiele aus Flask

Strukturbeispiele aus Flask

6Guten Code ausliefern

Nützliches Vokabular und nützliche Konzepte

Paketierung Ihres Codes

Conda

PyPI

Einfrieren Ihres Codes

PyInstaller

cx_Freeze

py2app

py2exe

bbFreeze

Paketierung für Linux-Built-Distributionen

Ausführbare ZIP-Dateien

Teil 3Szenario-Guide

7Nutzerinteraktion

Jupyter Notebooks

Kommandozeilenanwendungen

argparse

docopt

Plac

Click

Clint

cliff

GUI-Anwendungen

Widget-Bibliotheken

Spieleentwicklung

Webanwendungen

Web-Frameworks/Mikroframeworks

Web-Template-Engines

Web-Deployment

8Codemanagement und -optimierung

Continuous Integration

Tox

Systemadministration

Travis-CI

Jenkins

Buildbot

Serverautomatisierung

System- und Task-Überwachung

Geschwindigkeit

Threading

Multiprocessing

Subprozesse

PyPy

Cython

Numba

GPU-Bibliotheken

Interfacing mit C-/C++-/FORTRAN-Bibliotheken

9Software-Interfaces

Webclients

Web-APIs

Datenserialisierung

Pickle

Sprachübergreifende Serialisierung

Komprimierung

Das buffer-Protokoll

Verteilte Systeme

Vernetzung

Kryptografie

ssl, hashlib und secrets

pyOpenSSL

PyNaCl und libnacl

Cryptography

PyCrypto

bcrypt

10Datenmanipulation

Wissenschaftliche Anwendungen

IPython

NumPy

SciPy

Matplotlib

Pandas

Scikit-Learn

Rpy2

decimal, fractions und numbers

SymPy

Textmanipulation und Text-Mining

Stringtools in Pythons Standardbibliothek

Bildverarbeitung

11Datenpersistenz

Strukturierte Dateien

Datenbankbibliotheken

sqlite3

SQLAlchemy

Django ORM

peewee

PonyORM

SQLObject

Records

NoSQL-Datenbankbibliotheken

Anhang

BDFL

Python Software Foundation

PEPs

Einsteiger

Fortgeschrittene Einsteiger

Fortgeschrittene

Für Ingenieure und Wissenschaftler

Verschiedenes

Referenzen

Index

Vorwort

Python ist riesig. Richtig riesig. Es ist kaum zu fassen, wie unglaublich riesig es ist.

Dieses Handbuch ist nicht dazu da, Ihnen das Programmieren mit Python beizubringen (auch wenn wir viele großartige Quellen nennen, die genau das tun), es ist vielmehr ein von Insidern geschriebener Leitfaden für die von der Community bevorzugten Tools und Best Practices. Die primäre Zielgruppe sind Python-Neulinge und fortgeschrittene Anfänger, die etwas zur Open Source beitragen wollen, gerade am Anfang ihrer Karriere stehen oder eine Firma aufbauen. Doch auch wenn Sie Python nur gelegentlich nutzen, sind Teil 1 und Kapitel 5 für Sie sicherlich nützlich.

Der erste Teil hilft bei der Auswahl eines geeigneten Texteditors bzw. einer passenden Entwicklungsumgebung (wenn Sie beispielsweise häufig mit Java arbeiten, könnten Sie Eclipse mit einem Python-Plug-in bevorzugen) und stellt alternative Interpreter vor, die Anforderungen erfüllen, von denen Sie möglicherweise nicht mal wussten, dass Python sie erfüllen kann (z.B. gibt es eine MicroPython-Implementierung, die auf dem ARM Cortex-M4 basiert). Der zweite Teil demonstriert den für Python typischen (»pythonischen«) Programmierstil. Dafür sehen wir uns exemplarisch Beispielcode aus der Open-Source-Community an und hoffen auf diese Weise auf ein tiefer gehendes Interesse für die Materie und ein Experimentieren mit Open-Source-Code. Im letzten Teil sehen wir uns das riesige Universum der Python-Bibliotheken an, die in der Python-Community häufig genutzt werden. Das soll Ihnen eine Vorstellung davon geben, was Python jetzt bereits kann.

Alle Tantiemen aus dem Verkauf der Printfassung dieses Buchs werden direkt an die Django Girls (https://djangogirls.org/) gespendet. Diese globale Organisation veranstaltet freie Django- und Python-Workshops, entwickelt Open-Source-Online-Tutorials und sorgt für verblüffende erste Erfahrungen mit Technologie. Falls Sie etwas zur Onlineversion beitragen wollen, erfahren Sie auf unserer Website (http://docs.python-guide.org/en/latest/notes/contribute/), wie das geht.

Typografische Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursivschrift

Wird für neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen und sprachliche Hervorhebungen verwendet.

Nichtproportionalschrift

Wird für Programmlistings verwendet sowie in normalem Text, um Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hervorzuheben.

Nichtproportionalschrift fett

Hebt Text hervor, den Sie wortwörtlich eingeben müssen.

Nichtproportionalschrift kursiv

Hebt Text hervor, der vom Benutzer einzugeben ist oder dessen Wert(e) durch den Kontext bestimmt werden.

Dieses Symbol zeigt einen Tipp oder Vorschlag an.

Dieses Symbol steht für einen allgemeinen Hinweis.

Dieses Symbol zeigt eine Warnung an.

Danksagungen

Willkommen, Freunde, zu Hitchhiker’s Guide für Python.

Soweit ich weiß, ist dieses Buch das erste seiner Art: konzipiert und kuratiert von einem einzelnen Autor (meiner Wenigkeit, Kenneth), während ein Großteil des Inhalts »für lau« von Hunderten von Menschen auf der ganzen Welt zusammengetragen wurde. Noch nie zuvor in der Geschichte gab es die Technologie, die eine so wunderbare Zusammenarbeit dieser Größe und dieses Umfangs möglich machte.

Dieses Buch wurde möglich durch:

Community

Liebe bringt uns zusammen, und wir meistern alle Hürden.

Softwareprojekte

Python, Sphinx, Alabaster und Git.

Dienste

GitHub und Read the Docs.

Zu guter Letzt gilt mein persönlicher Dank Tanya, die die schwere Arbeit übernommen hat, dieses Buch in Form zu bringen und für die Veröffentlichung vorzubereiten, sowie dem unglaublichen O’Reilly-Team – Dawn, Jasmine, Nick, Heather, Nicole, Meg und allen anderen, die hinter den Kulissen daran gearbeitet haben, um aus diesem Buch das beste seiner Art zu machen.

TEIL 1

Einführung

Dieser Teil konzentriert sich auf das Einrichten einer Python-Umgebung. Er wurde inspiriert durch Stuart Ellis’ guide for Python on Windows (http://www.stuartellis.eu/articles/python-development-windows/) und besteht aus den folgenden Kapiteln und Themen:

Kapitel 1, Einen Interpreter wählen

Wir vergleichen Python 2 und Python 3 und sehen uns zusätzlich zu CPython einige Interpreter an.

Kapitel 2, Python richtig installieren

Wir zeigen Ihnen, wie man sich Python, pip und virtualenv beschafft.

Kapitel 3, Ihre Entwicklungsumgebung

Wir beschreiben unsere bevorzugten Texteditoren und IDEs für die Python-Entwicklung.

KAPITEL 1

Einen Interpreter wählen

Stand der Dinge: Python 2 versus Python 3

Bei der Wahl eines Python-Interpreters geistert immer die eine Frage durch den Raum: »Soll ich Python 2 oder Python 3 nehmen«? Die Antwort liegt nicht so auf der Hand, wie man glauben mag (auch wenn Python 3 jeden Tag verlockender wird).

Hier der Stand der Dinge:

Python 2.7 war lange Zeit der Standard.

Bei Python 3 wurden größere Änderungen an der Sprache vorgenommen, über die einige Entwickler sehr unglücklich sind.

1

Python 2.7 erhält notwendige Sicherheits-Updates

bis 2020 (

https://www.python.org/dev/peps/pep-0373/

)

.

Python 3 entwickelt sich kontinuierlich weiter, genau wie in der Vergangenheit Python 2.

Wie Sie sehen, ist die Entscheidung nicht ganz so einfach.

Empfehlungen

So wie wir es sehen, würde ein wirklich abgefahrener Typ2 Python 3 nutzen. Doch auch wenn Sie lediglich Python 2 einsetzen können, nutzen Sie immerhin noch Python. Hier unsere Empfehlungen:

Verwenden Sie Python 3, wenn …

Sie Python 3 lieben.

Sie nicht wissen, welche Version Sie nutzen sollen.

Sie den Wandel lieben.

Verwenden Sie Python 2, wenn …

Sie Python 2 lieben und traurig sind, weil Python 3 die Zukunft ist.

die Stabilitätsanforderungen Ihrer Software betroffen wären.

3

die von Ihnen genutzte Software es verlangt.

Also … Python 3?

Sind Sie bei der Wahl des Python-Interpreters offen, sollten Sie die neueste Python 3.x-Version einsetzen – jede neue Version bringt neue und verbesserte Module der Standardbibliothek, eine verbesserte Sicherheit und Fehlerkorrekturen. Fortschritt ist Fortschritt. Nutzen Sie Python 2 also nur aus guten Gründen, z.B. wenn Sie eine Python 2-Bibliothek benötigen, für die es bei Python 3 keine Alternative gibt, oder wenn Sie eine bestimmte Implementierung verwenden müssen (siehe »Implementierungen« auf Seite 5) oder wenn Sie (wie einige von uns) von Python 2 begeistert sind.

Schauen Sie sich Can I Use Python 3? (https://caniusepython3.com/) an, wenn Sie wissen wollen, ob die Python-Projekte, von denen Sie abhängig sind, die Nutzung von Python 3 verhindern.

Als weiterführende Lektüre sei Python2orPython3 (http://bit.ly/python2-or-python3) empfohlen. Es erklärt die Gründe für die Rückwärts-Inkompatibilität der Sprachspezifikation und verweist auf detaillierte Spezifikationen der Unterschiede.

Als Einsteiger haben Sie weit wichtigere Dinge zu tun, als sich um die Kompatibilität zwischen all den Python-Versionen Gedanken zu machen. Bringen Sie Ihr vorhandenes System erst mal ans Laufen und kümmern Sie sich später um diese Baustelle.

Implementierungen

Wenn die Leute von Python sprechen, ist häufig nicht nur die Sprache, sondern auch die CPython-Implementierung gemeint. Tatsächlich ist Python eine Sprachspezifikation, die auf unterschiedliche Weise implementiert werden kann.

Die verschiedenen Implementierungen können der Kompatibilität mit anderen Bibliotheken dienen oder vielleicht einer höheren Geschwindigkeit. Reine Python-Bibliotheken sollten unabhängig von der Python-Implementierung laufen, die auf C basierenden (wie NumPy) allerdings nicht. Dieser Abschnitt bietet einen kurzen Überblick über beliebte Implementierungen.

Dieses Handbuch geht davon aus, dass Sie die Standard-CPython-Implementierung von Python 3 nutzen, auch wenn wir häufig für Python 2 relevante Hinweise einstreuen.

CPython

CPython (http://www.python.org/) ist die in C geschriebene Referenzimplementierung4 von Python. Sie kompiliert Python-Code in Bytecode, der dann von einer virtuellen Maschine interpretiert wird. CPython bietet den höchsten Grad an Kompatibilität für Python-Pakete und in C geschriebene Erweiterungsmodule.5

Wenn Sie Open-Source-Code in Python entwickeln und das größtmögliche Publikum erreichen wollen, sollten Sie CPython nutzen. Möchten Sie Pakete nutzen, die von C-Erweiterungen abhängig sind, ist CPython Ihre einzige Option.

Alle Versionen der Sprache Python sind in C implementiert, da CPython die Referenzimplementierung ist.

Stackless

Stackless Python (https://bitbucket.org/stackless-dev/stackless/wiki/Home) ist ein »normales« CPython (d.h., es sollte mit allen Bibliotheken funktionieren, die CPython nutzen kann), entkoppelt aber über einen Patch den Python-Interpreter vom Aufrufstack. Dadurch wird es möglich, die Ausführungsreihenfolge des Codes zu ändern. Stackless führt das Konzept sogenannter Tasklets ein, die Funktionen in »Micro-Threads« umwandeln. Diese können dann serialisiert auf die Festplatte gespeichert und später über einen Scheduler (standardmäßig ein Round-Robin-Scheduler) ausgeführt werden.

Die greenlet-Bibliothek (http://greenlet.readthedocs.org) implementiert den gleichen Stack-Switching-Mechanismus für CPython-Nutzer. Ein Großteil dieser Funktionalität wurde auch in PyPy implementiert.

PyPy

PyPy (http://pypy.org/) ist ein Python-Interpreter, der eine statisch typisierte Teilmenge von Python namens RPython implementiert, was bestimmte Arten der Optimierung ermöglicht. Der Interpreter bietet einen Just-in-Time-Compiler und unterstützt mehrere Backends wie C, Common Intermediate Language (CIL) (http://bit.ly/standard-ecma-335) und die Java Virtual Machine (JVM).

PyPy strebt die größtmögliche Kompatibilität mit der Referenzimplementierung an, während es gleichzeitig die Performance erhöht. Wenn Sie die Performance Ihres Python-Codes verbessern wollen, sollten Sie PyPy eine Chance geben. Bei einer Benchmark-Suite läuft es momentan etwa fünfmal schneller als CPython (http://speed.pypy.org/).

Es unterstützt Python 2.7. Für Python 3 steht PyPy3 (http://pypy.org/compat.html) bereit. Beide Versionen sind über die PyPy-Download-Seite (http://pypy.org/download.html) verfügbar.

Jython

Jython (http://www.jython.org/) ist eine Implementierung des Python-Interpreters, die den Python-Code in Java-Bytecode kompiliert, der dann durch die JVM ausgeführt werden kann. Darüber hinaus kann Jython jede Java-Klasse wie ein Python-Modul importieren und nutzen.

Wenn Sie eine Schnittstelle zur existierenden Java-Codebasis brauchen oder aus anderen Gründen Python-Code für die JVM schreiben müssen, ist Jython die beste Wahl.

Jython unterstützt momentan Python 2.7 (http://bit.ly/jython-supports-27).

IronPython

IronPython (http://ironpython.net/) ist eine Python-Implementierung für das .NET Framework. Es kann Bibliotheken sowohl von Python als auch von .NET Framework nutzen und gleichzeitig Python-Code für andere Sprachen des .NET Framework bereitstellen.

Python Tools for Visual Studio (http://ironpython.net/tools/) integriert IronPython direkt in die Entwicklungsumgebung und macht es so zur idealen Wahl für Windows-Entwickler.

IronPython unterstützt Python 2.7 (http://ironpython.codeplex.com/releases/view/81726).

PythonNet

Python for .NET (http://pythonnet.github.io/) ist ein Paket, das eine nahezu nahtlose Integration eines nativ installierten Python-Systems mit der .NET Common Language Runtime (CLR) erlaubt. Das ist das genaue Gegenteil des von IronPython verfolgten Ansatzes, das heißt, PythonNet und IronPython ergänzen sich eher, als dass sie miteinander konkurrieren.

Im Zusammenspiel mit Mono (http://www.mono-project.com/) ermöglicht Python-Net auf Nicht-Windows-Systemen wie OS X und Linux die Arbeit innerhalb des .NET Framework. Es kann ohne Probleme zusammen mit IronPython betrieben werden.

PythonNet unterstützt Python 2.3 bis Python 2.7. Die Installationsanweisungen finden Sie auf der PythonNet-Readme-Seite (http://pythonnet.github.io/readme.html).

Skulpt

Skulpt (http://www.skulpt.org/) ist eine JavaScript-Implementierung von Python. Sie portiert nicht die gesamte Standardbibliothek von CPython. Die Bibliothek umfasst die Module math, random, turtle, image und unittest sowie Teile von time, urllib, DOM und re. Es ist für Lehrzwecke gedacht und bietet auch die Möglichkeit, eigene Module einzubinden (http://bit.ly/skulpt-adding-module).

Beachtenswerte Beispiele für seine Nutzung sind Interactive Python (http://interactivepython.org/) und CodeSkulptor (http://www.codeskulptor.org/demos.html).

Skulpt unterstützt einen Großteil von Python 2.7 und Python 3.3. Details finden Sie auf der Skulpt-GitHub-Seite (https://github.com/skulpt/skulpt).

MicroPython

MicroPython (https://micropython.org/) ist eine für Microcontroller optimierte Implementierung von Python 3. Sie unterstützt 32-Bit-ARM-Prozessoren mit dem Thumb v2- Befehlssatz, wie etwa die in kostengünstigen Microcontrollern eingesetzte Cortex-M-Familie. Sie kennt diese Module (http://bit.ly/micropython-library) der Python-Standardbibiliothek, einige MicroPython-spezifische Bibliotheken mit Board-Details, Speicherinformationen, den Netzwerkzugriff sowie eine für kleinere Größen optimierte ctypes-Version. Sie hat nichts mit dem Raspberry Pi (https://www.raspberrypi.org) zu tun, der ein Debian oder ein anderes C-basiertes Betriebssystem mit einem normal installierten Python einsetzt. Das pyboard (https://micropython.org/store/#/store) nutzt MicroPython als sein »Betriebssystem«.

Ab jetzt verwenden wir CPython auf Unix-artigen Systemen, unter OS X und auf Windows-Systemen.

Weiter geht’s mit der Installation – schnappen Sie sich Ihr Handtuch!

KAPITEL 2

Python richtig installieren

Dieses Kapitel erläutert die Installation von CPython unter Mac OS X, Linux und Windows. Die Abschnitte zu den Paketierungtools (wie Setuptools und pip) wiederholen sich, das heißt, Sie sollten direkt zu dem für Sie wichtigen Betriebssystem springen und die anderen überblättern.

Wenn Sie für eine Organisation arbeiten, die den Einsatz einer kommerziellen Python-Distribution wie Anaconda oder Canopy empfiehlt, sollten Sie den Anweisungen des Anbieters folgen. Entsprechende Hinweise finden Sie in »Kommerzielle Python-Distributionen« auf Seite 19.

Falls Python auf Ihrem System bereits installiert ist, dürfen Sie auf keinen Fall den symbolischen Link auf das python-Programm ändern. Das wäre ähnlich übel wie das laute Vorlesen von Vogonengedichten (https://en.wikipedia.org/wiki/Vogon#Poetry). (Denken Sie an den vom System installierten Code, der Python an einem bestimmten Ort erwartet …)

Python unter Mac OS X installieren

Die Mac OS X-Version, El Capitan, besitzt eine Mac-spezifische Implementierung von Python 2.7.

Sie müssen nichts installieren oder konfigurieren, um Python verwenden zu können. Doch wir empfehlen Ihnen wärmstens, Setuptools, pip und virtualenv zu installieren, bevor Sie damit beginnen, Python-Anwendungen für den realen Einsatz zu entwickeln (d.h. etwas zu Gemeinschaftsprojekten beizutragen). In einem späteren Abschnitt erfahren Sie mehr über diese Tools und wie man sie installiert. Insbesondere Setuptools sollten Sie immer installieren, da es damit wesentlich leichter für Sie ist, Python-Bibliotheken von Fremdanbietern einzusetzen.

Die bei OS X mitgelieferte Python-Version eignet sich wunderbar zum Lernen, ist für die kollaborative Entwicklung aber nicht geeignet. Darüber hinaus entspricht die bei OS X mitgelieferte Version nicht unbedingt der offiziellen aktuellen Release, die als stabile Produktionsversion betrachtet wird.1 Entwickeln Sie Skripte also nur für sich selbst, um Informationen von Webseiten abzurufen oder Daten zu verarbeiten, brauchen Sie nichts weiter. Doch wenn Sie etwas zu Open-Source-Projekten beitragen wollen oder in einem Team arbeiten, in dem unterschiedliche Betriebssysteme genutzt werden (oder dies für die Zukunft geplant ist)2, dann verwenden Sie die CPython-Release.

Bevor Sie irgendetwas herunterladen, lesen Sie erst die Hinweise und Warnungen auf den nächsten Seiten. Bevor Sie Python installieren, müssen Sie GCC installieren. Dazu können Sie Xcode (http://developer.apple.com/xcode/) herunterladen, die kleineren Command-Line-Tools (https://developer.apple.com/downloads/) (für den Download benötigen Sie einen Apple-Account) oder das noch kleinere osx-gcc-installer-Paket (http://bit.ly/osx-gcc-installer-package).

Falls Xcode bereits installiert ist, verzichten Sie auf den osx-gcc-installer. In Kombination kann es bei der Software zu Problemen kommen, die nur schwer zu finden sind.

Zwar kommt OS X mit einer großen Zahl von Unix-Utilities, doch wenn Sie mit Linux-Systemen vertraut sind, wird Ihnen eine Schlüsselkomponente fehlen: ein vernünftiger Paketmanager. Homebrew (http://brew.sh/) schließt diese Lücke.

Um Homebrew zu installieren, öffnen Sie das Terminal oder Ihren bevorzugten Terminal-Emulator und führen die folgenden Befehle aus:

$ BREW_URI=https://raw.githubusercontent.com/Homebrew/install/master/install

$ ruby -e "$(curl -fsSL ${BREW_URI})"

Das Skript erklärt die vorgenommenen Änderungen und fragt noch mal nach, bevor die Installation beginnt. Sobald Homebrew installiert ist, fügen Sie das Homebrew-Verzeichnis am Beginn Ihrer PATH-Umgebungsvariablen ein.3 Hängen Sie dazu die folgende Zeile an das Ende Ihrer ~/.profile-Datei an:

export PATH=/usr/local/bin:/usr/local/sbin:$PATH

Danach installieren Sie Python, indem Sie den folgenden Befehl einmal in einem Terminal ausführen:

$ brew install python3

Das Ganze für Python 2:

$ brew install python

Standardmäßig wird Python dann in /usr/local/Cellar/python3/ oder /usr/local/Cellar/python/ installiert. Gleichzeitig werden symbolische Links4 für den Interpreter unter /usr/local/python3 bzw. /usr/local/python angelegt. Wenn Sie die Option --user bei pip install nutzen, müssen Sie einen Bug umgehen, der mit den distutils und der Homebrew-Konfiguration (http://bit.ly/pip-install-bug) zusammenhängt. Wir empfehlen einfach die Verwendung von virtuellen Umgebungen, die in »virtualenv« auf Seite 12 beschrieben werden.

Setuptools und pip

Homebrew installiert Setuptools und pip für Sie. Das mit pip installierte Executable wird auf pip3 abgebildet, wenn Sie Python 3 verwenden, bzw. auf pip bei Python 2.

Mit Setuptools können Sie jede konforme5 Python-Software über ein Netzwerk (üblicherweise das Internet) mit einem einzigen Befehl (easy_install) herunterladen und installieren. Man kann diese Möglichkeit der Netzwerkinstallation mit nur wenig Aufwand auch in die eigene Python-Software integrieren.

Sowohl der Befehl pip als auch der Setuptools-Befehl easy_install sind Tools zur Installation und Verwaltung von Python-Paketen. pip ist gegenüber easy_install vorzuziehen, da es Pakete auch deinstallieren kann, die Fehlermeldungen verständlicher sind und weil es keine partiellen Paketinstallationen gibt (schlägt eine Installation fehl, werden alle bisherigen Änderungen rückgängig gemacht). Eine etwas ausführlichere Diskussion finden Sie unter pipvseasy_install(http://bit.ly/pip-vs-easy-install) im Python Packaging User Guide (https://packaging.python.org). Das ist Ihre erste Anlaufstelle für aktuelle Informationen zum Thema Paketierung.

Um Ihre pip-Installation zu aktualisieren, geben Sie den folgenden Befehl in der Shell ein:

$ pip install --upgrade pip

virtualenv

virtualenv(http://pypi.python.org/pypi/virtualenv) baut isolierte Python-Umgebungen auf. Es erzeugt einen Ordner, der alle ausführbaren Programme enthält, die die Pakete eines Python-Projekts benötigen könnten. Viele sehen es als die beste Vorgehensweise an, nur virtualenv und Setuptools zu installieren und immer virtuelle Umgebungen zu nutzen.6

Um virtualenv über pip zu installieren, führen Sie pip in der Kommandozeile einer Shell aus:

$ pip3 install virtualenv

Und so, wenn Sie mit Python 2 arbeiten:

$ pip install virtualenv

Sobald Sie sich in einer virtuellen Umgebung bewegen, können Sie den Befehl pip immer verwenden, unabhängig davon, ob Sie mit Python 2 oder Python 3 arbeiten. Deshalb wollen wir das hier im Weiteren ebenfalls so handhaben. »Virtuelle Umgebungen« auf Seite 37 geht detaillierter auf den Einsatz und die Motivation ein.

Python unter Linux installieren

Seit Wily Werewolf (Ubuntu 15.10) wird Ubuntu nur noch mit Python 3 ausgeliefert, Python 2 ist über apt-get verfügbar. Alle Details finden Sie auf Ubuntus Python-Seite (https://wiki.ubuntu.com/Python). Die Fedora-Release 23 war die erste, die nur Python 3 enthielt (sowohl Python 2.7 als auch Python 3 sind in den Releases 20 bis 22 verfügbar). Python 2.7 ist über den Paketmanager verfügbar.

Sind Python 2 und Python 3 parallel installiert, gibt es meist einen symbolischen Link von python2 zum Python 2- und von python3 zum Python 3-Interpreter. Wenn Sie sich für Python 2 entscheiden, lautet die aktuelle Empfehlung für Unix-artige Systeme (siehe Python Enhancement Proposal [PEP (https://www.python.org/dev/peps/pep-0394/) 394]), python2 explizit in Ihrer Shebang-Zeile anzugeben (z.B. #!/usr/bin/env python2 in der ersten Zeile der Datei), statt darauf zu vertrauen, dass Ihre Umgebung bei python das liefert, was Sie erwarten.

Obwohl es nicht in PEP 394 steht, hat es sich auch eingebürgert, pip2 und pip3 als symbolische Links auf die entsprechenden pip-Paket-Installer einzurichten.

Setuptools und pip

Selbst wenn pip über den Paket-Installer Ihres Systems verfügbar ist, müssen Sie sicherstellen, dass Sie die neueste Version verwenden. Führen Sie dazu die folgenden Schritte aus.

Laden Sie zuerst get-pip.py (https://bootstrap.pypa.io/get-pip.py) herunter.7

Als Nächstes öffnen Sie eine Shell, wechseln in das Verzeichnis, in dem auch get-pip.py liegt, und geben Folgendes ein:

$ wget https://bootstrap.pypa.io/get-pip.py

$ sudo python3 get-pip.py

Und für Python 2:

$ wget https://bootstrap.pypa.io/get-pip.py

$ sudo python get-pip.py

Das installiert auch die Setuptools.

Mit dem Befehl easy_install, der mit den Setuptools installiert wird, können Sie jede konforme8 Python-Software über ein Netzwerk (üblicherweise das Internet) herunterladen und installieren. Es ist auch möglich, diese Art der Netzwerkinstallation mit nur wenig Aufwand in die eigene Python-Software zu integrieren.

pip ist ein Befehl, mit dem Sie Python-Pakete einfach installieren und verwalten können. Es ist gegenüber easy_install zu bevorzugen, weil es Pakete auch deinstallieren kann, verständlichere Fehlermeldungen liefert und eine partielle Installation nicht möglich ist (schlägt eine Installation fehl, werden alle bisherigen Änderungen rückgängig gemacht). Eine etwas ausführlichere Diskussion finden Sie unter pipvseasy_install(http://bit.ly/pip-vs-easy-install) im Python Packaging User Guide (https://packaging.python.org). Das ist Ihre erste Anlaufstelle für aktuelle Informationen zum Thema Paketierung.

Entwicklungswerkzeuge

Nahezu jeder wird irgendwann eine Python-Bibliothek nutzen wollen, die von C-Erweiterungen abhängig ist. Manchmal kann Ihr Paketmanager Sie mit einer vorkompilierten Version versorgen, was Sie mit yum search oder apt-cachesearch prüfen können. Und mit dem neueren wheels-Format (http://pythonwheels.com/) (vorkompilierte, plattformspezifische Binaries) können Sie die Binaries möglicherweise direkt per pip von PyPI herunterladen. Doch wenn Sie zukünftig selbst C-Erweiterungen entwickeln oder wenn diejenigen, die die von Ihnen genutzte Bibliothek nicht mittels wheels für ihre Plattform bereitstellen, benötigen Sie Entwicklungswerkzeuge für Python: verschiedene C-Bibliotheken, make und den GCC-Compiler. Nachfolgend eine Liste nützlicher Pakete, die C-Bibliotheken nutzen:

Nebenläufigkeit

die Threading-Bibliothek

threading (

https://docs.python.org/3/library/threading.html

)

die Event-Handling-Bibliothek (Python 3.4+)

asyncio (

https://docs.python.org/3/library/asyncio.html

)

die Coroutinen-basierte Netzwerkbibliothek

curio (

https://curio.readthedocs.org

)

die Coroutinen-basierte Netzwerkbibliothek

gevent (

http://www.gevent.org/

)

die ereignisgesteuerte Netzwerkbibliothek

Twisted (

https://twistedmatrix.com/

)

Wissenschaftliche Analyse

die Lineare-Algebra-Bibliothek

NumPy (

http://www.numpy.org/

)

das numerische Toolkit

SciPy (

http://www.scipy.org/

)

die Machine-Learning-Bibliothek

scikit-learn (

http://scikit-learn.org/

)

die Plotting-Bibliothek

Matplotlib (

http://matplotlib.org//

)

Daten-/Datenbankschnittstellen

die Schnittstelle für das Datenformat HDF5

h5py (

http://www.h5py.org/

)

der PostgreSQL-Datenbankadapter

Psycopg (

http://initd.org/psycopg/

)

der Datenbankabstraktions- und objektrelationale Mapper

SQLAlchemy (

http://www.sqlalchemy.org/

)

Unter Ubuntu geben Sie in einer Shell Folgendes ein:

$ sudo apt-get update --fix-missing

$ sudo apt-get install python3-dev # Für Python 3

$ sudo apt-get install python-dev # Für Python 2

Und unter Fedora geben Sie in der Shell dieses ein:

$ sudo yum update

$ sudo yum install gcc

$ sudo yum install python3-devel # Für Python 3

$ sudo yum install python2-devel # Für Python 2

Mit pip3 install --user gewünschtes-paket können Sie dann alle Tools erzeugen, die kompiliert werden müssen (pip install --user gewünschtes-paket für Python 2). Auch das Tool selbst muss installiert sein (Details dazu finden Sie in der Dokumentation zur HDF5-Installation (https://www.hdfgroup.org/HDF5/release/obtain5.html)). Für PostgreSQL geben Sie unter Ubuntu in einer Shell Folgendes ein:

$ sudo apt-get install libpq-dev

Unter Fedora lautet der Befehl:

$ sudo yum install postgresql-devel

virtualenv

virtualenv ist ein Befehl, der mit dem virtualenv (https://pypi.python.org/pypi/virtualenv)-Paket installiert wird und virtuelle Python-Umgebungen aufbaut. Es erzeugt einen Ordner, der alle ausführbaren Programme enthält, die die Pakete in einem Python-Projekt benötigen könnten.

Um virtualenv über Ubuntus Paketmanager zu installieren, geben Sie Folgendes ein:

$ sudo apt-get install python-virtualenv

Unter Fedora lautet der Befehl:

$ sudo yum install python-virtualenv

Alternativ können Sie den pip-Befehl in der Kommandozeile ausführen und die Option --user nutzen, um es nicht systemweit, sondern nur lokal zu installieren:

$ pip3 install --user virtualenv

Wenn Sie Python 2 verwenden, lautet der Befehl:

$ sudo pip install --user virtualenv

Sobald Sie die virtuelle Umgebung nutzen, können Sie immer den Befehl pip verwenden, unabhängig davon, ob Sie mit Python 2 oder Python 3 arbeiten. Im Rest des Buchs werden wir das ebenfalls so machen. »Virtuelle Umgebungen« auf Seite 37 beschreibt Nutzung und Motivation im Detail.

Python unter Windows installieren

Windows-Nutzer haben es schwerer als andere Pythonistas, weil es schwieriger ist, etwas unter Windows zu kompilieren und weil viele Python-Bibliotheken unter der Haube C-Erweiterungen nutzen. Dank wheels (http://pythonwheels.com/) können Binaries (wenn es sie gibt) mittels pip von PyPI heruntergeladen werden, was die Dinge ein wenig vereinfacht.

Hier sind zwei Wege möglich: eine kommerzielle Distribution (in »Kommerzielle Python-Distributionen« auf Seite 19 diskutiert) oder direkt CPython. Anaconda ist wesentlich einfacher, besonders wenn wissenschaftliches Arbeiten ansteht. Tatsächlich empfiehlt so ziemlich jeder, der unter Windows wissenschaftlich mit Python arbeitet, Anaconda (mit Ausnahme derjenigen, die selbst C-basierte Python-Bibliotheken entwickeln). Doch wenn Sie sich mit Compiler und Linker auskennen, etwas zu C-Code nutzenden Open-Source-Projekten beitragen möchten oder einfach keine kommerzielle Distribution wollen, dann hoffen wir, dass Sie CPython installieren.9

Mit der Zeit werden mehr und mehr Pakete mit C-Bibliotheken im wheels-Format auf PyPI verfügbar sein, die dann per pip installiert werden können. Probleme gibt es erst, wenn die benötigten C-Bibliotheken nicht mit dem wheel gebündelt werden. Dieses Problem der Abhängigkeiten ist ein weiterer Grund dafür, dass Sie sich für kommerzielle Python-Distributionen wie Anaconda entscheiden könnten.

Nutzen Sie CPython, wenn Sie der Typ Windows-Nutzer sind, der:

keine Python-Bibliotheken benötigt, die von C-Erweiterungen abhängen,

einen Visual C++-Compiler besitzt (nicht den kostenlosen),

MinGW einrichten kann und der

mutig genug ist, Binaries von Hand herunterzuladen

10

und diese dann mittels

pip install

zu installieren.

Wenn Sie R oder MATLAB mit Python ersetzen möchten oder wenn Sie einfach nur schnell loslegen und CPython später bei Bedarf installieren wollen (einige Tipps finden Sie in »Kommerzielle Python-Distributionen« auf Seite 19), nutzen Sie Anaconda.11

Verwenden Sie Canopy, wenn Ihre Schnittstellen hauptsächlich grafischer Natur sind oder wenn Python Ihre erste Sprache ist und dies Ihre Erstinstallation.

Hat sich Ihr Team bereits für eine dieser Optionen entschieden, sollten Sie mitziehen und die entsprechende Variante wählen.

Um die CPython-Standardimplementierung unter Windows zu installieren, müssen Sie zuerst die neueste Version von Python 3 (https://www.python.org/ftp/python/3.5.0/python-3.5.0.exe) bzw. Python 2.7 (https://www.python.org/ftp/python/2.7.10/python-2.7.10.msi) von der offiziellen Website herunterladen. Wollen Sie sichergehen, eine topaktuelle Version zu installieren (oder wenn Sie wirklich, wirklich sicher sind, den 64-Bit-Installer nutzen zu wollen12, dann gehen Sie zur Python Releases for Windows (https://www.python.org/downloads/windows/)-Seite, um die von Ihnen benötige Release zu finden.

Die Windows-Version steht als MSI-Paket zur Verfügung. Das erlaubt Windows-Administratoren, die Installation mit ihren Standardtools zu automatisieren. Um das Paket manuell zu installieren, reicht ein Doppelklick auf die Datei.

Python wird ganz bewusst in einem Verzeichnis installiert, das die Versionsnummer enthält (z.B. wird Python Version 3.5 unter C:\Python35\ installiert), damit mehrere Python-Versionen ohne Konflikte auf dem gleichen System laufen können. Natürlich kann nur ein Interpreter die Standardanwendung für Python-Dateien sein. Der Installer modifiziert die Umgebungsvariable PATH nicht automatisch,13 sodass Sie immer die Kontrolle darüber haben, welche Version von Python ausgeführt wird.

Das Eingeben des vollständigen Pfads für den gewünschten Python-Interpreter wird schnell lästig, Sie sollten daher Ihren Standard-Interpreter in die PATH-Umgebungsvariable eintragen. Wollen Sie beispielsweise die Python-Installation in C:\Python35\ nutzen, würden Sie Ihre PATH-Umgebungsvariable wie folgt ergänzen:

C:\Python35;C:\Python35\Scripts\

Sie können dazu Folgendes in der PowerShell eingeben:14

PS C:\> [Environment]::SetEnvironmentVariable(

"Path",

"$env:Path;C:\Python35\;C:\Python35\Scripts\",

"User")

Im zweiten Verzeichnis (Scripts) werden bei der Installation bestimmter Pakete Befehlsdateien abgelegt, daher ist es eine nützliche Ergänzung. Sie müssen nichts weiter installieren oder konfigurieren, um Python nutzen zu können.

Abgesehen davon empfehlen wir dringend die Installation von Setuptools, pip und virtualenv, bevor Sie damit beginnen, Python-Anwendungen für den realen Einsatz (etwa Beiträge zu Gemeinschaftsprojekten) zu entwickeln. Wie man diese Tools nutzt und installiert, erfahren Sie weiter unten in diesem Abschnitt. Insbesondere Setuptools sollten Sie immer installieren, da es Ihnen die Nutzung von Python-Bibliotheken Dritter deutlich erleichtert.

Setuptools und pip

Die aktuellen MSI-Installer installieren neben Python Setuptools und pip gleich mit. Wenn Sie also den Anweisungen in diesem Buch gefolgt sind, sollten diese bereits installiert sein. Andernfalls ist es bei Python 2.7 am einfachsten, wenn Sie auf die neueste Release aktualisieren.15 Für die Python-Version 3.3 und ältere Versionen von Python 3 laden Sie das Skript get-pip.py (https://bootstrap.pypa.io/get-pip.py)16 herunter und führen es aus. Öffnen Sie eine Shell, wechseln Sie in das Verzeichnis, in dem get-pip.py liegt, und geben Sie Folgendes ein:

PS C:\> python get-pip.py

Mit Setuptools können Sie jede konforme17 Python-Software über ein Netzwerk (überlicherweise das Internet) mit einem einzigen Befehl (easy_install) herunterladen und installieren. Es ist auch möglich, diese Art der Netzwerkinstallation mit nur wenig Aufwand in Ihre eigene Python-Software zu integrieren.

Sowohl pips pip-Befehl als auch Setuptools’ easy_install-Befehl sind Tools zur Installation und Verwaltung von Python-Paketen. pip ist gegenüber easy_install zu bevorzugen, weil es Pakete auch deinstallieren kann, verständlichere Fehlermeldungen liefert und partielle Paketinstallationen unmöglich sind (bei Fehlern während der Installation werden alle bisherigen Änderungen rückgängig gemacht). Eine etwas differenziertere Diskussion finden Sie unter pipvseasy_install(http://bit.ly/pip-vs-easy-install) im Python Packaging User Guide (https://packaging.python.org). Das ist Ihre erste Anlaufstelle für aktuelle Informationen zum Thema Paketierung.

virtualenv

Der Befehl virtualenv(http://pypi.python.org/pypi/virtualenv) erzeugt isolierte Python-Umgebungen. Er erstellt einen Ordner mit allen notwendigen Executables und Paketen, die ein Python-Projekt nutzen könnte. Wird die Umgebung dann durch einen Befehl in diesem neuen Ordner aktiviert, wird dieser Ordner in der PATH-Umgebungsvariablen an die erste Stelle gesetzt, das heißt, der neue Ordner wird als Erster gefunden, und die Pakete in dessen Unterordnern werden verwendet. Um virtualenv per pip zu installieren, führen Sie pip in einem PowerShell-Terminal aus:

PS C:\> pip install virtualenv

»Virtuelle Umgebungen« auf Seite 37 geht ausführlicher auf Nutzung und Motivation ein. Unter OS X und Linux muss (weil System- und Drittanbietersoftware Python nutzt) zwischen den Python 2- und Python 3-Versionen von pip unterschieden werden. Unter Windows ist das nicht notwendig, wenn wir also von pip3 reden, bedeutet das für Windows-Nutzer pip. Unabhängig vom Betriebssystem können Sie, sobald Sie sich in der virtuellen Umgebung befinden, immer den Befehl pip verwenden, ganz egal, ob Sie mit Python 2 oder Python 3 arbeiten. Im Rest des Buchs machen wir das daher auch.

Kommerzielle Python-Distributionen

Ihre IT-Abteilung oder Ihr Dozent hat Sie gebeten, eine kommerzielle Python-Distribution zu installieren. Der Sinn dieser Bitte besteht darin, die Arbeit zu vereinfachen, die die Pflege einer konsistenten Umgebung für mehrere Nutzer erfordert. Alle hier aufgeführten Distributionen stellen C-Implementierungen von Python (CPython) bereit.

Ein technischer Gutachter der ersten Rohfassung dieses Kapitels hat uns darauf hingewiesen, dass wir die Probleme, die für die meisten Nutzer entstehen, wenn sie eine normale CPython-Installation unter Windows nutzen, gewaltig unterschätzen. Dass selbst mit wheels die Kompilierung und/oder das Linken externer C-Bibliotheken für jeden (mit Ausnahme erfahrener Entwickler) eine qualvolle Angelegenheit ist. Wir selbst bevorzugen CPython, doch die Wahrheit ist, dass Sie als »Konsument« von Bibliotheken und Paketen (im Gegensatz zu Entwicklern und Mitwirkenden) eine kommerzielle Distribution herunterladen und einfach weitermachen sollten – das gilt umso mehr, wenn Sie mit Windows arbeiten. Wenn Sie später etwas zur Open Source beitragen wollen, können Sie die reguläre CPython-Distribution immer noch installieren.

Ein späterer Wechsel zur Python-Standardinstallation ist einfacher, wenn Sie die Standardeinstellungen der herstellerspezifischen Installation nicht verändern.

Diese kommerziellen Distributionen haben Folgendes zu bieten:

Die Intel-Distribution für Python

Ziel der Intel-Distribution für Python (https://software.intel.com/en-us/python-distribution) ist ein hochleistungsfähiges Python in einem einfach zugänglichen freien Paket. Die Leistungssteigerung wird hauptsächlich dadurch erreicht, dass die Python-Pakete mit nativen Bibliotheken wie der Intel Math Kernel Library (MKL) verlinkt werden. Dazu kommen verbesserte Threading-Fähigkeiten, die die Intel Threading Building Blocks (TBB) (http://bit.ly/intel-tbb-for-python) ebenfalls einschließen. Das Paketmanagement baut auf Continuums Conda auf, doch auch pip wird unterstützt. Es kann eigenständig heruntergeladen oder von https://anaconda.org/ (https://anaconda.org/) in einer Conda-Umgebung (http://bit.ly/intel-python-beta) installiert werden.18

Es bietet den SciPy-Stack sowie die anderen gängigen Bibliotheken, die in den Release Notes (PDF) (http://bit.ly/intel-python-release-notes) aufgeführt sind. Kunden mit Intel Parallel Studio XE-Lizenz erhalten kommerziellen Support, und jeder andere findet Hilfe in den Foren. Diese Distribution bietet Ihnen also ohne große Umstände die wissenschaftlichen Bibliotheken und ist ansonsten eine ganz normale Python-Distribution.

Continuum Analytics’ Anaconda

Continuum Analytics’ Python-Distribution (https://www.continuum.io/downloads) steht unter der BSD-Lizenz und bietet in seinem Index freier Pakete (https://repo.continuum.io/pkgs/) massenhaft vorkompilierte Binaries aus den Bereichen Wissenschaft und Mathematik an. Es nutzt nicht pip als Paketmanager, sondern Conda, das auch virtuelle Umgebungen verwaltet, aber eher wie Buildout funktioniert (das in »Buildout« auf Seite 41 behandelt wird) und nicht wie virtualenv. Conda verwaltet Bibliotheken und andere externe Abhängigkeiten für den Benutzer. Die Paketformate sind nicht kompatibel, das heißt, die Installer können die Paketindizes des jeweils anderen nicht verarbeiten.

Die Anaconda-Distribution wird mit dem SciPy-Stack und anderen Tools geliefert. Anaconda bietet die beste Lizenz und viel kostenloses Zusatzmaterial. Wenn Sie eine kommerzielle Distribution nutzen wollen – insbesondere wenn Sie bereits mit der Kommandozeile vertraut sind und R oder Scala mögen (die ebenfalls enthalten sind) –, dann wählen Sie diese Distribution. Sollten Sie alle diese zusätzlichen Dinge nicht brauchen, nehmen Sie stattdessen die miniconda-Distribution (http://conda.pydata.org/miniconda.html). Zahlende Kunden erhalten verschiedene Haftungsfreistellungen (in Bezug auf Open-Source-Lizenzen: Wer darf wann was nutzen? oder: Wer wird für was verklagt?), kommerziellen Support und zusätzliche Python-Bibliotheken.

ActiveStates ActivePython

ActiveStates Distribution (http://www.activestate.com/downloads) steht unter der ActiveState Community License und ist nur für die Evaluierung kostenlos. ActiveState bietet auch Lösungen für Perl und Tcl. Das Hauptverkaufsargument ist eine umfangreiche Haftungsfreistellung (wieder in Bezug auf Open-Source-Lizenzen) für die mehr als 7.000 Pakete ihres umfassenden Paket-Index (https://code.activestate.com/pypm/), der über ActiveStates pypm-Tool (ein pip-Ersatz) zugänglich ist.

Enthoughts Canopy

Enthoughts Distribution (https://store.enthought.com/downloads/) steht unter der Canopy Software License. Sie nutzt den Paketmanager enpkg anstelle von pip, um sich mit Canopys Paket-Index (http://bit.ly/enthought-canopy) zu verbinden.

Enthought bietet kostenlose akademische Lizenzen für Studenten und Mitarbeiter von akademischen Einrichtungen an. Charakteristische Merkmale der Enthought-Distribution sind grafische Tools für die Interaktion mit Python, darunter eine eigene IDE, die sich an MATLAB orientiert, ein grafischer Paketmanager, ein grafischer Debugger und ein grafisches Tool zur Datenmanipulation. Wie bei anderen kommerziellen Distributionen gibt es für zahlende Kunden Haftungsfreistellungen, kommerziellen Support und zusätzliche Pakete.

KAPITEL 3

Ihre Entwicklungsumgebung

Dieses Kapitel gibt einen Überblick über Texteditoren, integrierte Entwicklungsumgebungen (IDEs) und andere Entwicklungswerkzeuge, die aktuell für den Editier-Test-Debug-Zyklus von Python beliebt sind.

Wir geben unumwunden zu, dass wir Sublime Text (siehe »Sublime Text« auf Seite 25) als Editor und PyCharm/IntelliJ IDEA (siehe »PyCharm/IntelliJ IDEA« auf Seite 31) als IDE bevorzugen, doch wir verstehen auch, dass die beste Wahl von der Aufgabe und den anderen von Ihnen genutzten Sprachen abhängt. Dieses Kapitel stellt eine Reihe der beliebtesten Werkzeuge vor und nennt Gründe für ihre Wahl.

Python benötigt keine Build-Tools wie Make oder Javas Ant bzw. Maven, da es interpretiert wird und nicht kompiliert.1 Wir werden sie hier daher nicht weiter behandeln. In Kapitel 6 erläutern wir aber, wie man Setuptools nutzt, um Projekte zu paketieren, und Sphinx für die Dokumentation verwendet.

Wir werden auch nicht auf Versionskontrollsysteme eingehen, da diese sprachunabhängig sind, doch die meisten derjenigen, die die C-(Referenz-)Implementierung von Python pflegen, sind gerade von Mercurial auf Git umgestiegen (siehe PEP 512 (https://www.python.org/dev/peps/pep-0512/)). Die ursprüngliche Begründung für den Einsatz von Mercurial in PEP 374 (https://www.python.org/dev/peps/pep-0374/) enthält einen kurzen, aber nützlichen Vergleich zwischen den vier heute am weitesten verbreiteten Optionen Subversion, Bazaar, Git und Mercurial.

Das Kapitel endet mit einem kurzen Blick auf die verschiedenen Möglichkeiten, unterschiedliche Interpreter zu betreiben, um die möglichen Deployment-Szenarien während der Entwicklung zu replizieren.

Texteditoren

Mit nahezu allem, mit dem man auch nur einen einfachen Text schreiben kann, kann man Python-Code entwickeln. Doch die Wahl des richtigen Editors kann Ihnen einige Stunden Arbeit pro Woche einsparen. Alle in diesem Abschnitt vorgestellten Texteditoren unterstützen die Syntaxhervorhebung und können über Plug-ins um statische Codeprüfungen (»Linter«) und Debugger erweitert werden.

Tabelle 3-1 führt die von uns bevorzugten Texteditoren (nach Präferenz absteigend sortiert) auf und nennt Gründe, warum ein Entwickler den einen oder anderen nutzen sollte. Der Rest des Kapitels geht detaillierter auf jeden Editor ein. Falls Sie nach speziellen Features suchen, finden Sie auf Wikipedia einen sehr detaillierten Vergleich zu Texteditoren (https://en.wikipedia.org/wiki/Comparison_of_text_editors).

Tabelle 3-1: Texteditoren auf einen Blick

Tool

Verfügbarkeit

Gründe für den Einsatz

Sublime Text

• Offene API/kostenlose Testversion

• Schnell, geringer Speicherdarf.

 

• OS X, Linux, Windows

• Kommt auch mit großen Dateien (> 2 GB) zurecht.

 

 

• Erweiterungen sind in Python geschrieben.

Vim

• Open Source/Spenden willkommen

• Sie lieben Vi/Vim.

 

• OS X, Linux, Windows, Unix

• Zumindest Vi ist auf jedem Betriebssystem (außer Windows) vorinstalliert.

 

 

• Läuft in der Konsole.

Emacs

• Open Source/Spenden willkommen

• Sie lieben Emacs.

 

• OS X, Linux, Windows, Unix

• Erweiterungen sind in Lisp geschrieben.

 

 

• Läuft in der Konsole.

TextMate

• Open Source/lizenzpflichtig

• Sehr gute Benutzerschnittstelle.

 

• Nur OSX

• Nahezu alle Schnittstellen (statischer Codecheck/Debug/Test) sind vorinstalliert.

 

 

• Gute Apple-Tools, z.B. die Schnittstelle zu xcodebuild (über das Xcode-Bundle).

Atom

• Open Source/frei

• Erweiterungen sind in JavaScript/HTML/CSS geschrieben.

 

• OS X, Linux, Windows

• Sehr schöne GitHub-Integration.

Code

• Offene API (endlich)/frei

• IntelliSense (Codevervollständigung) mit Microsofts Visual Studio vergleichbar.

 

• OS X, Linux, Windows

• Gut für Windows-Entwickler. Unterstützt .Net, C# und F#.

 

 

• Nachteil: noch nicht erweiterbar (aber angekündigt).

Sublime Text

Sublime Text (http://www.sublimetext.com/) ist der von uns empfohlene Texteditor für Code, Markup und Prosa. Seine Geschwindigkeit ist das erste Argument für eine Empfehlung, die Zahl der verfügbaren Pakete (über 3.000) das nächste.

Sublime Text wurde 2008 von Jon Skinner erstmals veröffentlicht. Er ist in Python geschrieben, unterstützt das Editieren von Python-Code perfekt und nutzt Python auch für seine Paketerweiterungs-API. Ein Projects-Feature erlaubt dem Benutzer, Dateien oder Ordner hinzuzufügen (bzw. zu löschen). Diese können dann über die Funktion Goto Anything durchsucht werden, die dann die Stellen innerhalb des Projekts aufspürt, die den oder die Suchbegriffe enthalten.

Sie benötigen PackageControl (https://packagecontrol.io/installation), um auf das Sublime Text-Paket-Repository zugreifen zu können. Zu den beliebten Paketen gehört SublimeLinter, ein Interface zu den vom Benutzer installierten statischen Codecheckern, Emmett für Webentwicklungs-Snippets2 und Sublime SFTP für entferntes Editieren per FTP.

Anaconda (http://damnwidget.github.io/anaconda/) (das nichts mit der kommerziellen Python-Distribution gleichen Namens zu tun hat) wurde 2013 veröffentlicht und verwandelt Sublime fast in eine IDE mit statischen Codecheckern, Docstring-Checks, einem Testsystem und der Fähigkeit, die Definition markierter Objekte nachzuschlagen oder Beispiele für deren Einsatz zu zeigen.

Vim

Vim ist ein konsolenbasierter Texteditor (mit optionaler GUI). Anstelle von Menüs und Symbolen verwendet er Tastaturkürzel für das Editieren. Er wurde 1991 von Bram Moolenaar veröffentlicht, während sein Vorgänger Vi 1976 von Bill Joy veröffentlicht wurde. Beide sind in C geschrieben.

Vim ist über eine einfache Skriptsprache namens vimscript erweiterbar. Es gibt viele Optionen für den Einsatz anderer Sprachen. Das Python-Skripting aktivieren Sie, indem Sie bei der Kompilierung des C-Quellcodes die Flags --enable-python-interp und/oder --enable-python3interp setzen. Um zu prüfen, ob Python oder Python3 aktiviert ist, geben Sie :echo has("python") bzw. :echo has("python3") ein. Das Ergebnis ist »1«, wenn Python unterstützt wird, andernfalls »0«.

Vi (und häufig auch Vim) ist auf so gut wie jedem System (außer Windows) standardmäßig vorinstalliert. Für Windows gibt es einen Installer für Vim (http://www.vim.org/download.php#pc). Wer die Lernkurve meistert, wird extrem effektiv. Das geht so weit, dass die grundlegenden Vi-Tastenkürzel als Konfigurationsoptionen für die meisten anderen Editoren und IDEs zur Verfügung stehen.

Wenn Sie für ein großes Unternehmen in irgendeiner IT-Position arbeiten wollen, sollten Sie zumindest rudimentär mit Vi umgehen können.3 Vim bietet wesentlich mehr Möglichkeiten als Vi, doch es ist ähnlich genug, sodass ein Vim-Nutzer auch mit Vi zurechtkommt.

Wenn Sie nur in Python entwickeln, können Sie die Standardeinstellungen für Einrückungen und Zeilenumbrüche auf PEP 8 (https://www.python.org/dev/peps/pep-0008)-konforme Werte setzen. Dazu legen Sie eine Datei namens .vimrc in Ihrem Home-Verzeichnis an4 und fügen die folgenden Zeilen hinzu:

set textwidth=79 " Zeilen mit mehr als 79 Zeichen werden umbrochen

set shiftwidth=4 " >> rückt um 4 Spalten ein; mit << geht's 4 Spalten zurück

set tabstop=4 " Tabs sind 4 Spalten lang

set expandtab " Tabs werden durch Leerzeichen ersetzt

set softtabstop=4 " 4 Leerzeichen einfügen/löschen, wenn Tab/Backspace gedrückt wird

set shiftround " Einrückung auf Vielfaches von 'shiftwidth' aufrunden

set autoindent " Einrückung an der vorigen Zeile ausrichten

Bei diesen Einstellungen erfolgt nach 79 Zeichen ein Zeilenumbruch, eingerückt wird mit vier Zeichen pro Tab, und innerhalb einer eingerückten Zeile wird auch die nächste Zeile entsprechend eingerückt.

Es gibt ein Syntax-Plug-in namens python.vim (http://bit.ly/python-vim), das gegenüber der bei Vim 6.1 mitgelieferten Syntaxdatei einige Verbesserungen bietet. Ein kleines Plug-in namens SuperTab (http://bit.ly/supertab-vim) vereinfacht die Codevervollständigung über die Tabulatortaste oder beliebige andere Tasten. Sollten Sie Vim auch für andere Sprachen nutzen, gibt es ein praktisches Plug-in namens indent (http://bit.ly/indent-vim), das die Einstellung der Einrückung für Python-Quelldateien übernimmt.

Diese Plug-ins versorgen Sie mit einer grundlegenden Entwicklungsumgebung für Python. Wenn Ihr Vim mit +python kompiliert wurde (seit Vim 7 der Standard), können Sie auch das Plug-in vim-flake8 (https://github.com/nvie/vim-flake8) verwenden, mit dem statische Codechecks direkt im Editor möglich sind. Es stellt die Funktion Flake8 zur Verfügung, die PEP 8 (http://pypi.python.org/pypi/pep8/) und Pyflakes (http://pypi.python.org/pypi/pyflakes/) ausführt und mit einer beliebigen Taste oder Aktion verknüpft werden kann. Das Plug-in gibt Fehler am unteren Bildrand aus und bietet eine einfache Möglichkeit, zur entsprechenden Zeile zu springen.

Wenn Sie wollen, können Sie es so einrichten, dass Vim Flake8 immer aufruft, wenn eine Python-Datei gespeichert wird. Fügen Sie dazu die folgende Zeile in Ihre .vimrc ein:

autocmd BufWritePost *.py call Flake8()

Wenn Sie bereits mit syntastic (https://github.com/scrooloose/syntastic) arbeiten, können Sie es so einstellen, dass es Pyflakes beim Schreiben ausführt und Fehler bzw. Warnungen im quickfix-Fenster ausgibt. Hier eine entsprechende Beispielkonfiguration, die auch Status- und Warnmeldungen in der Statuszeile ausgibt:

set statusline+=%#warningmsg#

set statusline+=%{SyntasticStatuslineFlag()}

set statusline+=%*

let g:syntastic_auto_loc_list=1

let g:syntastic_loc_list_height=5

Python-Mode

Der Python-Mode (https://github.com/klen/python-mode) ist eine komplexe Lösung zur Bearbeitung von Python-Code unter Vim. Wenn Sie die hier vorgestellten Features mögen, sollten Sie ihn nutzen (beachten Sie aber, dass Vim dann etwas länger zum Starten braucht):

asynchrones Python-Code-Checking (

pylint

,

pyflakes

,

pep8

,

mccabe

) in beliebiger Kombination

Code-Refactoring und Autovervollständigung mit

rope (

https://github.com/python-rope/rope

)

schnelles Python-Folding (Sie können eingerückten Code »verstecken«)

Unterstützung für virtualenv

die Fähigkeit, die Python-Dokumentation zu durchsuchen und Python-Code auszuführen

automatische

PEP 8 (

http://pypi.python.org/pypi/pep8/

)

-Fehlerkorrekturen

Emacs

Emacs ist ein weiterer mächtiger Texteditor. Er verfügt mittlerweile über eine GUI, kann aber auch direkt in der Konsole ausgeführt werden. Er ist vollständig programmierbar (in Lisp) und kann mit ein wenig Mühe zu einer Python-IDE aufgebohrt werden. Masochisten und Raymond Hettinger (http://pyvideo.org/speaker/138/raymond-hettinger)5 nutzen ihn.

Emacs ist in Lisp geschrieben und wurde 1976 von Richard Stallman und Guy L. Steele, Jr. vorgestellt. Zu den fest integrierten Features gehört entferntes Editieren (per FTP), ein Kalender, das Senden und Lesen von E-Mail und sogar ein Psychiater (Esc, dann x, dann doctor). Populäre Plug-ins sind unter anderem YASnippet, mit dem Sie Code-Snippets auf Tasten legen können, und Tramp für das Debugging. Es ist über einen eigenen Lisp-Dialekt namens elisp plus erweiterbar.

Wenn Sie bereits mit Emacs arbeiten, finden Sie im EmacsWiki »Python Programming in Emacs« (http://emacswiki.org/emacs/PythonProgrammingInEmacs) Tipps und Tricks zu Python-Paketen und zur Konfiguration. Emacs-Neulinge sollten mit dem offiziellen Emacs-Tutorial (http://bit.ly/gnu-emacs-tutorial) starten.

Momentan gibt es für Emacs drei wesentliche Python-Modi:

Fabián Ezequiel Gallinas python.el, das seit der Emacs-Version 24.3+ im Lieferumfang enthalten ist, implementiert Syntaxhervorhebung, Einrückung, Bewegung, Interaktion mit der Shell und eine Reihe weiterer

gängiger Features des Emacs-Editier-Modus (

https://github.com/fgallina/python.el#introduction

)

.

Jorgen Schäfers

Elpy (

http://elpy.readthedocs.org/

)

zielt auf eine vollständige, interaktive Entwicklungsumgebung in Emacs ab – inklusive Debugging, Linter und Codevervollständigung.

Pythons Quelldistribution (

https://www.python.org/downloads/source/

)

wird mit einer alternativen Version ausgeliefert, die Sie im Verzeichnis

Misc/python-mode.el

finden. Sie können sie im Web auch separat von

launchpad (

https://launchpad.net/python-mode

)

herunterladen. Sie besitzt einige Tools zur Programmierung per Spracheingabe sowie zusätzliche Tastaturkürzel und ermöglicht die

Einrichtung einer vollständigen Python-IDE (

http://www.emacswiki.org/emacs/ProgrammingWithPythonModeDotEl

)

.

TextMate

TextMate (http://macromates.com/) ist ein GUI-basierter Editor mit Emacs-Wurzeln, der nur unter OS X läuft. Er besitzt ein Apple-typisches Interface, das es irgendwie hinbekommt, unaufdringlich zu sein und gleichzeitig alle Befehle mit minimalem Aufwand zur Verfügung zu stellen.

TextMate ist in C++ geschrieben und wurde 2004 erstmals von Allan Oddgard und Ciarán Walsh vorgestellt. Sublime Text (siehe »Sublime Text« auf Seite 25) kann TextMate-Snippets direkt importieren, und Microsofts Editor Code (siehe »Code« auf Seite 29) kann Syntaxhervorhebungen von TextMate direkt importieren.

In beliebigen Sprachen geschriebene Snippets können in gebündelten Gruppen eingefügt und darüber hinaus über Shell-Skripte erweitert werden. Außerdem ist es möglich, einen beliebigen Text zu markieren und über die Tastenkombination Cmd+| (Pipe) als Standardeingabe an ein Skript weiterzuleiten. Die Ausgabe des Skripts ersetzt den markierten Text.

Die Syntaxhervorhebung für Apples Swift und Objective-C ist fest integriert. Über das Xcode-Bundle steht eine Schnittstelle zu xcodebuild zur Verfügung. Ein TextMate-Veteran wird keine Probleme haben, mit diesem Editor in Python zu codieren. Neulinge, die nicht viel Zeit mit der Entwicklung von Apple-Produkten verbringen, sind mit den neueren plattformübergreifenden Editoren (die sich häufig ausgiebig bei TextMates beliebtesten Features bedienen) besser bedient.

Atom

Atom (https://atom.io/) ist ein »hackbarer Texteditor für das 21. Jahrhundert«. So lautet zumindest die Aussage der Leute von GitHub, die ihn entwickelt haben. Er wurde 2014 veröffentlicht und ist in CoffeeScript (JavaScript) und Less (CSS) geschrieben. Er basiert auf Electron (früher Atom Shell)6, also auf GitHubs Applikations-Shell, die wiederum auf io.js und Chromium aufsetzt.

Atom ist über JavaScript und CSS erweiterbar, und Nutzer können Snippets in jedweder Sprache hinzufügen (auch TextMate-basierte Snippet-Definitionen). Wie sicher erwartet, besitzt er eine sehr schöne GitHub-Integration. Er beinhaltet ein natives Paketmanagement und eine Vielzahl von Paketen (über 2.000). Für die Python-Entwicklung empfohlen wird Linter (https://github.com/AtomLinter/Linter) in Kombination mit linter-flake8 (https://github.com/AtomLinter/linter-flake8). Webentwicklern könnte auch der Atom-Entwicklungsserver (https://atom.io/packages/atom-development-server) gefallen, der einen kleinen HTTP-Server ausführt und eine HTML-Vorschau in Atom erlaubt.

Code

Microsoft hat Code im Jahr 2015 angekündigt. Es ist ein kostenloser Closed-Source-Texteditor innerhalb der Visual-Studio-Familie und basiert ebenfalls auf GitHubs Electron. Er läuft plattformübergreifend, und die Tastenkombinationen erinnern stark an TextMate.

Code verfügt über eine Erweiterungs- API (https://code.visualstudio.com/Docs/extensions/overview) – verfügbare Erweiterungen finden Sie im Marktplatz für VS-Code-Erweiterungen (https://code.visualstudio.com/docs/editor/extension-gallery). Er vereint alles, was seine Entwickler für das Beste von TextMate und Atom mit Microsoft halten. Er kommt mit IntelliSense (Codevervollständigung), die an Visual Studio heranreicht, und unterstützt .Net, C# und F#.

IDEs

Viele Entwickler nutzen sowohl einen Texeditor als auch eine IDE, wobei bei größeren, komplexeren oder eher kollaborativen Projekten meist zur IDE gewechselt wird. Tabelle 3-2 hebt die Unterscheidungsmerkmale einiger beliebter IDEs hervor. Die nachfolgenden Abschnitte gehen dann etwas genauer auf die jeweiligen IDEs ein.

Ein Feature, das häufig als Grund für den Einsatz einer vollwertigen IDE genannt wird (neben Codevervollständigung und Debugging-Tools), ist die Fähigkeit, schnell zwischen den Python-Interpretern zu wechseln (z.B. von Python 2 zu Python 3 zu IronPython). Diese Möglichkeit beinhalten alle der in Tabelle 3-2 aufgeführten freien IDE-Versionen. Visual Studio bietet das mittlerweile bei allen Varianten.7

Zusätzliche Features (die kostenlos sein können oder auch nicht) sind Schnittstellen zu Ticketing-Systemen, Tools für das Deployment (z.B. Heroku oder Google App Engine), Werkzeuge für das kollaborative Arbeiten, entferntes Debugging sowie zusätzliche Features zur Nutzung von Web-Frameworks wie Django.

Tabelle 3-2: IDEs auf einen Blick

Tool

Verfügbarkeit

Gründe für den Einsatz

PyCharm/Intellij IDEA

• Offene API/kostenpflichtige Professional-Edition

• Nahezu perfekte Codevervollständigung.

 

• Open Source/kostenlose Community-Edition

• Gute Unterstützung virtueller Umgebungen.

 

• OS X, Linux, Windows

• Gute Unterstützung von Web-Frameworks (in der kostenpflichtigen Version).

Aptana Studio 3/Eclipse + LiClipse + PyDev

• Open Source/kostenlos

• Sie lieben Eclipse.

• OS X, Linux, Windows

• Java-Unterstützung (LiClipse/Eclipse).

WingIDE

• Offene API/kostenlose Testversion

• Großartiger (Web-)Debugger, der beste der hier aufgeführten IDEs.

 

• OS X, Linux, Windows

• Per Python erweiterbar.

Spyder

• Open Source/kostenlos

• OS X, Linux, Windows

• Data Science: IPython ist in Spyder integriert, wird im Paket mit NumPy, SciPy und Matplotlib geliefert.

 

• Die Standard-IDE beliebter wissenschaftlicher Python-Distributionen: Anaconda, Python(x,y) und WinPython.

NINJA-IDE

• Open Source/Spenden willkommen

• Bewusst leichtgewichtig.

 

• OS X, Linux, Windows

• Starker Python-Fokus.

Komodo IDE

• Offene API/Texteditor (Komodo Edit) ist Open Source

• Python, PHP, Perl, Ruby, Node.

 

• OS X, Linux, Windows

• Erweiterungen basieren auf Mozilla-Add-ons.

Eric (Eric Python IDE)

• Open Source/Spenden willkommen

• Ruby + Python.

 

• OS X, Linux, Windows

• Bewusst leichtgewichtig.

 

 

• Großartiger (wissenschaftlicher) Debugger. Kann einen Thread debuggen, während andere weiterlaufen.

Visual Studio (Community)

• Offene API/kostenlose Community-Edition

• Sehr gute Integration von Microsoft-Sprachen und -Tools.

 

• Kostenpflichtige Professional- und Enterprise-Edition

• IntelliSense (Codevervollständigung) ist fantastisch.

 

 

• Projektmanagement und Unterstützung beim Deployment inklusive Tools zur Sprint-Planung und Manifest-Template in der Enterprise-Edition.

 

 

• Vorbehalt: Virtuelle Umgebungen werden nur in der (teuersten) Enterprise-Edition unterstützt.

PyCharm/IntelliJ IDEA

PyCharm (http://www.jetbrains.com/pycharm/) ist die von uns bevorzugte Python-IDE. Die Hauptgründe dafür sind die nahezu perfekte Codevervollständigung sowie die Qualität der Tools für die Webentwicklung. In der Wissenschaftscommunity wird die kostenlose Version (bei der die Webentwicklungstools fehlen) als für ihre Bedürfnisse ausreichend empfunden, es wird aber öfter auf Spyder (siehe »Spyder« auf Seite 33) zurückgegriffen.

PyCharm wird von JetBrains entwickelt, das auch für IntelliJ IDEA bekannt ist, eine proprietäre Java-IDE, die mit Eclipse konkurriert. PyCharm (veröffentlicht 2010) und IntelliJ IDEA (veröffentlicht 2001) nutzen die gleiche Codebasis, und ein Großteil der Features von PyCharm lässt sich bei IntelliJ durch das kostenlose Python-Plug-in (http://bit.ly/intellij-python) ergänzen.

JetBrains empfiehlt PyCharm für ein einfacheres Benutzer-Interface und IntelliJ IDEA, wenn Sie Introspektion von Jython-Funktionen vornehmen möchten, zwischen Sprachen wechseln müssen oder ein Java-zu-Python-Refactoring nötig ist. (PyCharm funktioniert mit Jython, aber nur als mögliche Wahl für den Interpreter. Die Werkzeuge zur Introspektion stehen nicht zur Verfügung.) Die beiden werden separat lizenziert, Sie müssen sich also vor dem Kauf entscheiden.

Die IntelliJ Community Edition und die PyCharm Commuity Edition sind Open Source (Apache-2.0-Lizenz) und kostenlos.

Aptana Studio 3/Eclipse + LiClipse + PyDev

Eclipse ist in Java geschrieben und wurde 2001 von IBM als offene, vielseitige Java-IDE veröffentlicht. PyDev (http://pydev.org/), das Eclipse-Plug-in für die Python-Emtwicklung, wurde 2003 von Aleks Totic veröffentlicht, der den Stab später an Fabio Zadrozny übergab. Es ist das beliebteste Eclipse-Plug-in für die Python-Entwicklung.

Obwohl sich die Eclipse-Community nicht wirklich gewehrt hat, als Forenbesucher anfingen, IntelliJ IDEA und Eclipse zu vergleichen und IntelliJ den Vorzug zu geben, ist Eclipse immer noch die am häufigsten verwendete Java-IDE. Das ist für Python-Entwickler von Interesse, die Schnittstellen zu in Java entwickelten Tools nutzen müssen, da es für viele beliebte Werkzeuge (wie etwa Hadoop, Spark und die entsprechenden proprietären Varianten) Instruktionen und Plug-ins für die Entwicklung mit Eclipse gibt.

Ein PyDev-Fork ist in Aptana Studio 3 (http://www.aptana.com/products/studio3.html) integriert, einer Open-Source-Suite mit Plug-ins für Eclipse, die eine Python-IDE (mit Django), Ruby (und Rails), HTML, CSS und PHP bietet. Der primäre Fokus von Aptanas Eigentümer (der Fa. Appcelerator) liegt auf Appcelerator Studio, einer proprietären Mobilplattform für HTML, CSS und JavaScript, bei der monatliche Gebühren fällig werden (sobald eine App live geht). Allgemeine Unterstützung für PyDev und Python ist vorhanden, hat aber keine Priorität. Abgesehen davon ist Aptanas Studio 3 eine gute Wahl, wenn Sie Eclipse mögen, als JavaScriptEntwickler hauptsächlich für mobile Plattformen entwickeln und gelegentliche Ausflüge in Richtung Python unternehmen müssen.

LiClipse wurde aus dem Wunsch nach verbesserter Mehrsprachigkeit und dem einfachen Zugriff auf vollständig dunkle Themes (was bedeutet, neben dem Texthintergrund sind auch Menüs und Rahmen dunkel) geboren. Es besteht aus einer von Zadrozny entwickelten proprietären Suite von Eclipse-Plug-ins. Ein Teil der (optionalen) Lizenzgebühren fließt an PyDev, um es auch weiterhin vollständig kostenlos und als Open Source anbieten zu können (es steht unter der EPL-Lizenz, die auch von Eclipse genutzt wird). Es wird zusammen mit PyDev ausgeliefert, Python-Nutzer müssen es nicht mehr selbst installieren.

WingIDE

WingIDE (http://wingware.com/) ist eine Python-spezifische IDE und nach PyCharm die wohl zweitbeliebteste Python-IDE. Sie läuft unter Linux, Windows und OS X.

Die Debugging-Tools sind sehr gut und umfassen auch Tools zum Debugging von Django-Templates. Die Nutzer von WingIDE nennen als Hauptgründe für den Einsatz dieser IDE den Debugger, die steile Lernkurve und den geringen Speicherbedarf.

Wing wurde im Jahr 2000 von Wingware veröffentlicht und ist in Python, C und C++ geschrieben. Erweiterungen werden unterstützt, ein Plug-in-Repository gibt es bisher aber noch nicht. Nutzer müssen also in anderen Blogs und GitHub-Accounts nach verfügbaren Paketen suchen.

Spyder

Spyder (https://github.com/spyder-ide/spyder) (eine Abkürzung für Scientific PYthon DevelopmentEnviRonment) ist eine IDE, die sich gezielt an Nutzer wissenschaftlicher Python-Bibliotheken richtet.

Spyder wurde von Carlos Córdoba in Python geschrieben. Es ist Open Source (MIT-Lizenz) und bietet Codevervollständigung, Syntaxhervorhebung, einen Klassen- und Funktionsbrowser sowie Objektinspektion. Zusätzliche Features sind über Community-Plug-ins verfügbar.

Spyder integriert pyflakes (http://pypi.python.org/pypi/pyflakes/), pylint (https://www.pylint.org/) und rope (https://github.com/python-rope/rope) und wird mit NumPy, SciPy, IPython und Matplotlib geliefert. Es wird selbst mit den beliebten wissenschaftlichen Python-Distributionen Anaconda, Python(x, y) und WinPython ausgeliefert.

NINJA-IDE

NINJA-IDE (http://www.ninja-ide.org/) (nach dem rekursiven Akronym Ninja-IDE Is Not Just Another IDE) ist eine plattformübergreifende IDE für die Entwicklung von Python-Anwendungen. Sie läuft unter Linux/X11, Mac OS X und Windows. Installer für die verschiedenen Plattformen können von der NINJA-IDE-Website heruntergeladen werden.