Apfel trifft Schlange – Python auf dem Mac

Auch wenn ich diese Zeilen kurz nach Weihnachten schreibe, geht es hier um kein böses Reptil, welches dafür sorgen möchte, dass wir aus dem Paradies vertrieben werden. Ganz im Gegenteil, denn vielleicht ist Programmiersprache Python ja auch ein Schritt in die richtige Richtung 😉

Ob dies tatsächlich so ist, vermag ich noch nicht zu beurteilen. Das letzte Mal, dass ich mit Python zu tun hatte, war während des Studiums und das ist ja nun auch schon ein paar Tage her. Ich kann mich jedoch erinnern, dass wir damals relativ schnell gute Fortschritte mit unserem TCP/IP-Stack, den wir implementieren mussten, vorangekommen sind.

Aktuell benötige ich Python und das Framework Django für ein neues Projekt, welchem ich mich zum Jahreswechsel angeschlossen habe. Spannend wird es allemal, aber zuerst muss ich mich wieder etwas mit Python vertraut machen. Damit ich in Zukunft noch weiß, was und wie ich es gemacht habe, archiviere ich mein Vorgehen einfach hier 😉

Nachfolgend geht es also darum Python und ein paar weitere nette Tools zu installieren, um damit produktiv arbeiten zu können. Da ich ja seit einiger Zeit (mittlerweile) stolzer Besitzer eines Macs bin, werden sich die Anweisung auch darauf beziehen. Für andere Betriebssysteme möge man bitte die Installer austauschen und die Anweisungen anpassen.

Wie ich es von meiner Frau gelernt habe, geht es beim ersten Angriff darum, sich einen Überblick zu verschaffen und sich dann mit Details des Tatorts zu befassen. Darum habe ich auch erstmal geschaut, was man alles benötigt, um ordentliche Python-Anwendungen zu schreiben und welche Tools dafür hilfreich sein können. Außerdem habe ich versucht ein paar Best Practices zu berücksichtigen, was vor allem später bei der STrukturierung eines Projektes von Interesse ist. Vorerst ergab sich, dass folgendes installiert und eingerichtet werden soll:

  • Python
  • easy_install
  • pip
  • virtualenv
  • virtualenvwrapper
  • django
  • Eclipse

Ich nutze als Paketmanager Homebrew, welches eine nette Alternative zu MacPorts darstellt. Und genau damit installiert man auch Python:

brew install python --framework

Das ist alles! Fertig ist der Lack 😉 Was an der Stelle aber auf keinen Fall fehlen darf ist die Option „–framework“, denn ohne diese kommt es zu Problemen mit unterschiedlichen Python-Versionen auf dem System. Das habe ich bereits alles hinter mir!

Also wenn man als Ausgabe folgendes erhält, sollte man nochmal checken, wie Python installiert wurde:

Traceback (most recent call last):
File “”, line 1, in
ImportError: No module named virtualenvwrapper.hook_loader
virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader, check that virtualenv has been installed for...

Das was Homebrew für das System ist, sind easy_install und pip für Python-Packages. easy_install ist Bestandteil der setuptools. Diese einfach wie auf der Homepage beschrieben installieren. Danach können wir mittels

easy_install pip

pip installieren, der ja easy_install ablösen soll. Ähnlich verfahren wir mit virtualenv und virtualenvwrapper. Beides benötigen wir, um jedem Python-Projekt eine eigene Laufzeitumgebung zu schaffen. Dadurch kann man Module und deren Versionen stets passend zu dem Projekt installieren, verändern oder gar löschen. Man „zerschießt“ sich also nicht das eine Projekt, indem man Updates, die für ein anderes nötig sind, installiert oder irgendwas anderes ändert oder entfernt. Für mich ein klarer Vorteil, weswegen virtualenv nicht fehlen darf. Der Wrapper macht genau das, was der Name schon vermuten lässt. Er stellt eine einfachere Benutzung von virtualenv bereit. Um diesen richtig nutzen zu können, muss noch die Profil-Datei der benutzten Shell (zum Beispiel .profile oder .zshrc im Home-Verzeichnis) angepasst werden. Bitte folgendes für das eigene System modifizieren:

export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/2.7.2/bin/python2.7
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
export WORKON_HOME=/Users/aflx/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

Wie man hier bereits erkennen kann, benötigen wir noch ein Verzeichnis .virtualenvs, in welches sämtliche verschiedenen Konfigurationen für Python abgelegt werden. Startet man nun eine neue Terminal-Instanz, stehen einem die verschiedenen Kommandos für den virtualenvwrapper zur Verfügung und wir können mit

mkvirtualenv testenv

unsere erste Umgebung erstellen. Was man damit noch alles anstellen kann, kann man auf der Projektseite nachlesen. An dieser Stelle reicht es, dass es eine funktionierende Umgebung gibt.

Wenn wir nun mit

pip install django

das Django-Framework installieren, passiert das nur in der aktuell ausgewählten virtuellen Umgebung, die wir zuvor angelegt haben. Und damit haben wir es auch schon geschafft! Man kann das Ganze leicht testen, indem man auf der Konsole Python aufruft und die Version des Django-Frameworks abfragt:

import django
django.get_version()

Um schnell mal ein paar Dinge zu testen, ist die Python-Shell sehr nützlich, aber wir wollen ja richtige Anwendungen schreiben und das mache ich bevorzugt mit Eclipse. Die Python- und Django-Unterstützung installiert man einfach nach und nutzt als Update-Site die von PyDev: http://pydev.org/nightly. Hat man die benötigten Module installiert kann man direkt ein neues Django-Projekt starten. Wichtig ist hierbei die Auswahl des Python-Interpreters! Man kann zwar alles automatisch konfigurieren, doch wir wollen ja ganz bewusst für jedes Projekt die passende Umgebung nutzen. Daher wählen wir als Interpreter auch nicht die Standard-Installation von Python sondern die aus unseren .virtualenvs-Ordner. Wenn es darum geht die einzelnen Pakete auszuwählen, habe ich einfach alle ausgewählt. Eine Anleitung mit Bildchen zum Einrichten eines Python-Projektes kann man auch hier finden.

Und nun kann es losgehen! Am besten, man hangelt sich erstmal durch ein Tutorial wie dem auf der Django Projektseite oder dem Django-Workshop.

Zusammengefasst sieht das dann wie folgt aus:

  1. Ein neues Projekt mit dem Namen HelloWorld anlegen.
  2. In dem Package HelloWorld die Dateien views.py und urls.py anlegen:
    views.py   
    1. from django.http import HttpResponse
    2.  
    3. def helloView(request):
    4.   return HttpResponse("Hello world!")

    urls.py   
    1. from django.conf.urls.defaults import *
    2.  
    3. urlpatterns = patterns('HelloWorld.views',
    4.   (r'', 'helloView'),
    5. )
  3. Nun noch dafür sorgen, dass die App HelloWorldaktiviert wird und folgendes in der von Eclipse angelegten Datei settings.py anpassen:
    1. INSTALLED_APPS = (
    2.   .
    3.   .
    4.   .
    5.   'HelloWorld'
    6. )

    (An dieser Stelle vielleicht noch ein Hinweis. Wenn man als Datenbank beim Anlegen des Projektes sqlite ausgewählt hat, so trägt Eclipse in der settings.py unter DATABASES automatisch einen Pfad zu der Datenbankdatei ein. Diesen Pfad sollte man aber unbedingt überprüfen, da ich die Erfahrung gemacht habe, dass er falsch ist und es somit zu Problemen kommt.)
  4. Als letztes muss noch eine Route zu unserer App definiert und dafür gesorgt werden, dass die urls.py aus dem Package HelloWorld benutzt wird. Dafür passen wir die urls.py im Projektordner an, die Eclipse selbst erstellt hat:
    1. from django.conf.urls.defaults import patterns, include, url
    2.  
    3. # Uncomment the next two lines to enable the admin:
    4. # from django.contrib import admin
    5. # admin.autodiscover()
    6.  
    7. urlpatterns = patterns('',
    8.   (r'^HelloWorld/', include("HelloWorld.urls")),
    9.   .
    10.   .
    11.   .
    12. )
  5. Nun noch den Server starten (Debugger starten) und im Browser als Adresse http://127.0.0.1:8000/HelloWorld/ eintragen und fertig.

Wir haben also vorerst alles installiert und eingerichtet, was man für die Arbeit mit Python benötigt. Wie man mit ordentlichen (Sub-)Domains arbeiten und wie man sein Projekt strukturieren kann, werde ich sicher später mal erläutern. Also einfach demnächst wieder vorbeischauen 😉

Ein Gedanke zu „Apfel trifft Schlange – Python auf dem Mac

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.