Wiss. Rechnen » Python
 

Auf dem Cluster ist Python 3.6.6 installiert. Als Betriebssystemstandard ist außerdem Python 2.7.5 verfügbar. Wir empfehlen, falls Python 2 nicht zwingend notwendig ist, Python 3 zu verwenden. Alle folgenden Erklärungen beziehen sich auf Python 3 und sind unter Umständen in Python 2 nicht verfügbar.

Eine gute Ressource für Python-Anfänger sind zum Beispiel die Tutorials auf der Python-Website.

Hinweis: Beispielbefehle, die mit $ beginnen, beziehen sich auf die Linux-Konsole, Befehle, die mit >>> beginnen, auf die Python-Konsole. Diese Zeichen müssen bei der Befehlseingabe weggelassen werden.

Aufruf von Python

Mit dem Befehl python3 können Sie die interaktive Konsole aufrufen.

$ python3
Python 3.6.6 (default, Mar 29 2019, 00:03:27)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Der Befehl python ruft die Python2-Konsole auf.

Um ein Python-Skript auszuführen, geben Sie

$ python3 <skriptname>

ein. Sie können auch einzelne Python-Befehle ausführen mittels der Option -c

$ python3 -c "print('Hello world.'); print('Use semicolons to enter multiple commands.')"

Beachten Sie, dass der gesamte Befehl oder Kette von Befehlen von Anführungszeichen (entweder einfachen oder doppelten) umschlossen sein muss.

Die hier beschriebenen Befehle können selbstverständlich auch in Shell-Skripten (wie zum Beispiel Job-Skripten) verwendet werden.

Python-Pakete und Nachinstallation von Paketen

Python-Code ist in Paketen (Packages) organisiert, diese enthalten einzelne Module. Jede Datei mit der Endung .py ist ein Modul, jedes Verzeichnis, das eine Datei __init__.py enthält, ist ein Paket. Im zentralen Python Package Index (PyPI) sind eine große Anzahl von Paketen verfügbar. Einige dieser Pakete sind auf dem Cluster bereits installiert. Sie können sich eine Liste aller installierten Pakete anzeigen lassen, indem Sie in der Python-Konsole

>>> help(„modules“)

eingeben. Benötigen Sie ein Paket, das nicht installiert ist, können Sie es mit dem Programm Pip selbst installieren. Dazu geben Sie in der Konsole:

$ pip3 install --user <Paketname>

ein. Das Paket sowie eventuell noch nicht vorhandene Abhängigkeiten werden dann in Ihrem Nutzerverzeichnis installiert, standardmäßig in

/home/<IhrUsername>/.local/lib/python<Versionsnummer>/site-packages

Pakete in diesem Verzeichnis werden direkt von Python gefunden. Beachten Sie, dass Pakete auf diese Weise nur für Sie nutzbar sind. Sie können ein Python-Modul oder Paket in einem anderen Python-Skript verwenden, indem Sie es importieren

>>> import examplemodule

bzw.

>>> from examplepackage import examplemodule

Eigene Software und Umgebungsvariablen

Wenn Sie auf dem Cluster mit von Ihnen selbst in Python geschriebener Software (oder manuell heruntergeladenen Paketen) rechnen wollen, müssen Sie sicherstellen, dass Python Ihre Software findet. Ein Python-Skript, das Ihre Software einbindet

runthis.py 
import mysoftware 

# Do stuff with mysoftware…

wird mit folgender Fehlermeldung abbrechen:

>>> import mysoftware 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ImportError: No module named 'mysoftware'

Dies liegt daran, dass Python beim Import von Modulen (oder Paketen) nur in definierten Pfaden nach dem Modulnamen sucht. Sie können sich die Liste dieser Pfade ansehen, indem Sie in der Python-Konsole

>>> import sys; print(sys.path)

eingeben. Sie können das Verzeichnis Ihrer Software innerhalb von Python hinzufügen

>>> sys.path.append(/home/<IhrUsername>/mysoftware)

Empfehlenswerter ist es, die Umgebungsvariable PYTHONPATH zu verwenden, indem Sie sie am Anfang Ihres Job-Skripts setzen und exportieren

$ export PYTHONPATH=PYTHONPATH:/home/<IhrUsername>/mysoftware

In beiden Fällen erfolgt das Hinzufügen zum Suchpfad nur temporär, das heißt so lange wie Python (im Falle von sys.path) oder Ihr Terminal (im Falle von PYTHONPATH) offen ist. Sie können Pfade permanent zum sys.path hinzufügen, indem Sie in einem bereits zum sys.path gehörenden Verzeichnis eine Datei mit der Endung .pth anlegen, in der Sie die zusätzlichen Verzeichnisse auflisten (eins pro Zeile).

Standardmäßig ist das Einbinden nicht rekursiv, das heißt, selbst wenn Sie ein Verzeichnis zum sys.path oder PYTHONPATH hinzufügen, können Sie Python-Module in Unterverzeichnissen nicht importieren. Wenn das Unterverzeichnis allerdings eine Datei namens __init__.py besitzt, behandelt Python das Verzeichnis wie ein Paket (siehe oben) und Sie können entweder das Paket oder einzelne Module aus diesem Paket importieren.

Aktualisiert um 14:58 am 2. Juli 2018 von Jan Philipp Stephan