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
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:
- Tar-Datei mit dem Python-Modul herunterladen: wget <url_to_module>
- Tar-File auspacken: tar xvfz <modulname>
- Ggf. in das Verzeichnis wechseln, das beim Entpacken angelegt wurde.
- Python-Modul erzeugen: python setup.py build
- 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.
Seit März 2016 ist der Befehl pip bzw. pip2 für Python 2 installiert. pip3 für Python 3 ist jedoch nicht installiert. Nähere Informationen siehe https://swwiki.e-dschungel.de/kas#python
Vielen dank für dem Tipp.