Auch wenn es in den Web-Hosting-Paketen nicht explizit erwähnt wird: bei all-inkl.com kann auch Python in den Shared-Hosting-Paketen genutzt werden. Sofern ausschließlich auf die vorinstallierten Module zurückgegriffen wird klappt das auch sehr gut.

Sollen aber zusätzliche Python Module installiert werden, so funktioniert das nicht wie gewohnt per pip, da der SSH-User hier keinen Zugriff hat. Mit nur wenigen manuellen Schritten und Anpassungen können aber auch beliebige Python-Module im home-Verzeichnis des SSH-Benutzers installiert werden.

Vorbereitung

Dazu sollte zunächst ein Verzeichnis für die Python-Module angelegt werden. Idealerweise sollte das Verzeichnis nicht im Web-Root-Verzeichnis einer Domäne liegen, so dass die Dateien der Module nicht nicht per http abgerufen werden können.

Liegt also das Web-Root unter /www/htdocs/w0<xyz>/html , so könnte beispielsweise das Verzeichnis /www/htdocs/w0<xyz>/lib  verwendet werden.

In diesem Beispiel werden dann folgende Verzeichnisse angelegt:

mkdir -p /www/htdocs/w0<xyz>/lib/python/site-packages
mkdir -p /www/htdocs/w0<xyz>/lib/python2.7/site-packages

Danach müssen die eben erzeugten Verzeichnisse in der Umgebungsvariablen $PYTHONPATH  aufgenommen werden, damit Python weiß, wo es nach den Modulen suchen muss. Dazu werden folgende Zeilen in der Datei /www/htdocs/w0<xyz>/.user_bashrc eingetragen:

export PYTHONPATH=$PYTHONPATH:/www/htdocs/w0<xyz>/lib/python/site-packages
export PYTHONPATH=$PYTHONPATH:/www/htdocs/w0<xyz>/lib/python2.7/site-packages
Hinweis: Wird die Variable PYTHONPATH  in /.bashrc  gesetzt, so werden die Änderungen bei einem all-inkl internen Server-Wechsel nicht mit übernommen.

Danach sollte man sich einmal ab- und wieder anmelden. Dabei sollte die Umgebungsvariable $PYTHONPATH  von dem Script .user_bashrc  korrekt gesetzt werden. Überprüft wird das mit set| grep PYTHONPATH . Ist alles korrekt gesetzt, sind die Vorbereitungen abgeschlossen.

Modulinstallation

Je nachdem wie das Modul angeboten wird, muss bei der Installation unterschiedlich vorgegangen werden.

Installation per Setup.py

Python-Module die als Tar-File (tar.gz oder tar.bz2) zum Download bereit stehen, haben in der Regel auch eine Datei Setup.py. Solche Module können folgendermaßen installiert werden:

  1. Tar-Datei mit dem Python-Modul herunterladen: wget <url_to_module>
  2. Tar-File auspacken: tar xvfz <modulname>
  3. Ggf. in das Verzeichnis wechseln, das beim Entpacken angelegt wurde.
  4. Python-Modul erzeugen: python setup.py build
  5. Python-Modul installieren: python setup.py install –prefix=/www/htdocs/w0<xyz>/

Beim letzten Schritt ist es wichtig, dass der Parameter –prefix  mit übergeben wird, da eine Installation ansonsten nur mit Root-Rechten durchgeführt werden kann. Wird kein Fehler angezeigt, sollte die Installation erfolgreich abgeschlossen sein.

Installation per easy_install

Das easy_install-Kommando muss ist in der Regel noch nicht installiert. Daher muss zunächst das  SetUpTools Python Paket  per Setup.py (s.o.) installiert werden.

Danach kann die Installation eines Python Moduls per easy_install folgendermaßen durchgeführt werden:

easy_install --prefix=/www/htdocs/w0<xyz>/ <Modul-Name>

Auch hier muss unbedingt der Parameter –prefix  verwendet werden, damit die Installation ohne Root-Rechte durchgeführt werden kann.

Manuelle Installation

Kann das Python-Modul weder per Setup.py noch per easy_install installiert werden, so hilft vielleicht die manuelle Methode. Dazu muss in der Regel das entsprechende Modul-Verzeichnis lediglich in ein Verzeichnis aus dem Python-Pfad abgelegt werden. Dazu bietet sich das Verzeichnis /www/htdocs/w0<xyz>/lib/python/site-packages  oder /www/htdocs/w0<xyz>/lib/python2.7/site-packages  an, die bereits bei der Vorbereitung angelegt wurden.

Installation prüfen

Wird Python im interaktiven Modus aufgerufen kann mit dem Kommando >>> import <modulname>  einfach überprüft werden, ob das neue Modul jetzt in Python verfügbar ist.

Wird ein ImportError  angezeigt, dann ist es sehr wahrscheinlich, dass der Python-Pfad nicht korrekt gesetzt ist und das Modul daher von Python nicht gefunden wird. Mit den Kommandos

>>> import sys
>>> sys.path

kann eine Liste mit den Verzeichnissen angezeigt werden, in denen Python nach Modulen sucht. Sind die Verzeichnisse, die in der .user_bashrc  eingefügt wurden, nicht in dieser Liste, dann sollte die Einträge in der .user_bashrc  nochmal auf Tippfehler überprüft werden. Außerdem ist es wichtig, dass nach der Änderung der  .user_bashrc diese auch ausgeführt wurde (z.B. durch ab- und anmelden oder durch manuelles Ausführen).

Ist in der  .user_bashrc  kein Fehler und ist auch der Python-Pfad korrekt gesetzt (siehe set | grep PYTHONPATH ), dann könnte es noch sein, dass bei der Installation des Moduls ein Fehler aufgetreten ist. Dann hilft nur ein erneuter Installationsversuch.