Setup Django unter OSX (Teil #1)

Django ist ein sehr flexibles und stabiles Python-Webframework. Der Start ist aber nicht ganz selbsterklärend. Daher ein kleines Tutorial um mit OSX den Start zu vereinfachen. Dieses Tutorial kann natürlich auch für die Verwendung des Django-CMS genutzt werden.

Installation PIP

Bevor mit Django gestartet werden kann sollte man einige Vorbereitungen treffen. Zuerst benötigen wir PIP, den Python Package-Installer.

Wir starten Terminal oder iTerm (mein Fav.) und geben folgendes ein:

python get-pip.py

Unter OS-X klappt das so natürlich nicht, es sollte folgende Fehlermeldung in der Kommandozeile kommen:

can't open file 'get-pip.py': [Errno 2] No such file or directory

Mit folgender Anweisung klappts dann auch auf dem Mac:

sudo easy_install pip

Installation Virtual-Env

Jedes Projekt benötigt andere Packages. Damit wir nicht alle Packages global installieren müssen, aktivieren wir eine virtuelle Umgebung. Natürlich müssen wir diese erst mal installieren:

pip install virtualenv (Python 2)
pip3 install virtualenv (Python 3)

Falls eine Fehlermeldung kommt die lautet: Could not find an activated virtualenv (required). Einfach mal folgenden Command eingeben, dann sollte es klappen. Das kann natürlich auch in der .bashrc oder in der .zshrc hinterlegt werden. Ich arbeite z.B. mit iTerm2 und oh-my-zsh.

export PIP_REQUIRE_VIRTUALENV=false

Zur Sicherheit auch mal checken ob der Wert nicht schon hinterlegt ist und auf true steht.

Nun, was haben wir jetzt so alles global an Packages aktiviert:

pip freeze (Python 2)
pip3 freeze (Python 3)

Jetzt sollten alle aktiven Packages aufgelistet werden. Falls ein bestimmtes Paket gesucht wird, kann man leicht über grep filtern:

pip freeze | grep virtualenv (Python 2)
pip3 freeze | grep virtualenv (Python3)

 

Aktivierung eines Virtual-Envs

Vorab, ein Virtual Environment muss nicht zwingend im Django-Projektordner liegen. Ich teile es z.B. so auf, dass ich einen Django-Folder auf dem Desktop habe mit Namen „django“. Dort liegt dann ein Unterordner django/env/ und dort speichere ich meine Virtual-Envs. In django/* liegen dann meine Projekte/Repos. Das kann man so machen, muss man aber nicht, ich finde es so übersichtlicher.

Nun wechseln wir in den Folder /env und erstellen und aktivieren ein Python 2.7 Virtual-Environment:

virtualenv test-python2
source test-python2/bin/activate
python -V
#Python 2.7.11

Damit das mit Python 3 klappt muss es wie folgt aussehen:

virtualenv -p python3 test-python3
source test-python3/bin/activate
python -V
#Python 3.5.1

Um ein Virtual-Env zu deaktivieren muss einfach nur deactivate ausgeführt werden. Damit man sich die viele Tipperei spart, kann man hier jetzt noch zwei kleine Aliase in der .bashrc speichern.

# django project aliases
alias project-name="cd /Users/xXx/Desktop/django/projet-name"
alias activate-project-name="source /Users/xXx/Desktop/django/env/project-name/bin/activate"

Somit kommt man einfach schneller an seine Projekte und muss nicht immer mit dem Pfaden rumkämpfen. Den Linuxcracks brauch ich das ja nicht erzählen, ihr kennt’s ja eh ;-). Sidenote: das xXx im Pfad steht für dein User-Verzeichnis, also abändern nicht vergessen!

Damit sich nun die globalen Pakete nicht mit den Projekt-Paketen vermischen, kann das Virtual-Env auch ohne den globalen Modulen erstellt werden. Also führen wir folgendes Kommando in unseren django/env/ Verzeichnis aus:

virtualenv --no-site-packages test-python2

Installation der Pakete

Um unser Projekt mit allen abhänigkeiten starten zu können benötigen wir jetzt die projektspezifischen Module. In der Regel sollte in jedem Projekt eine requirements.txt (ähnlich zur composer.json in der PHP-Welt) liegen. Wir navigieren nun in unser Projektverzeichnis und installieren über folgendes Kommando die Pakete:

pip install -r requirements.txt

Je nach dem wie umfangreich die requirements.txt ist, kann das jetzt etwas dauern.

Um zu sehen was jetzt alles installiert ist, einfach mal pip freeze:

pip freeze
# beautifulsoup4==4.5.1
# Django==1.10.2
# django-allauth==0.27.0
# django-appconf==1.0.2
# django-compressor==2.1
# django-countries==4.0
# django-debug-toolbar==1.6
# django-extensions==1.7.4
# django-extensions-shell==1.7.4.1
# django-hamlpy==0.85
# django-htmlmin==0.9.1
# django-rosetta==0.7.12
# django-suit==0.2.21
# html5lib==0.999999999
# Markdown==2.6.7
# microsofttranslator==0.8
# oauthlib==2.0.0
# Pillow==3.4.2
# polib==1.0.7
# Pygments==2.1.3
# python-openid==2.2.5
# rcssmin==1.0.6
# requests==2.11.1
# requests-oauthlib==0.7.0
# rjsmin==1.0.12
# six==1.10.0
# sqlparse==0.2.1
# webencodings==0.5

Installation SASS

Damit wir auch SASS für unser Projekt nutzen können muss das natürlich auch installiert sein. Also falls Du SASS noch nicht auf der Kommandozeile ausführen kannst:

sudo gem install sass
sass -v
#Sass 3.4.22 (Selective Steve)

Falls es Probleme mit der Installation von z.B. psycopg2 geben sollte, einfach folgendes ausführen:

xcode-select --install