Python¶
Python is an interpreted, object-oriented, high-level programming language with dynamic semantics. Its high-level built in data structures, combined with dynamic typing and dynamic binding, make it very attractive for Rapid Application Development, as well as for use as a scripting or glue language to connect existing components together. Python's simple, easy to learn syntax emphasizes readability and therefore reduces the cost of program maintenance.
Python versions¶
Με την παρακάτω εντολή μπορούμε να δούμε όλες τις κεντρικά εγκατεστημένες εκδόσεις της Python στην Υπολογιστική Συστοιχία "Νεφέλη":
Terminal output
-------------------------------------------------------------------------------
python: python/3.14.0
-------------------------------------------------------------------------------
Στη συνέχεια, μπορούμε να τρέξουμε την εντολή module spider ώστε να εντοπίσουμε τα modules που θα χρειαστεί να κάνουμε load για να την χρησιμοποιήσουμε. Για παράδειγμα:
module spider python/3.14.0
Terminal output
You will need to load all module(s) on any one of the lines below before the "python/3.14.0" module is available to load.
gcc/14.2.0
gcc/15.2.0
Help:
The Python programming language.
Επομένως, πριν χρησιμοποιήσουμε την python/3.14.0, θα χρειαστεί πρώτα να κάνουμε load το module gcc/14.2.0.Για αυτό τον σκοπό, μπορούμε να τρέξουμε την module load ως εξής:
module load gcc/14.2.0 python/3.14.0
Ποια έκδοση Python θα πρέπει να χρησιμοποιήσω;
Είναι προτιμότερο να χρησιμοποιούμε κάποια από τις πιο πρόσφατες εκδόσεις Python που ανήκει στα Active Python Releases.
Όταν ξεκινάμε ένα νέο project, επιλέγουμε να χρησιμοποιήσουμε τον πιο πρόσφατο διαθέσιμο GNU compiler (gcc) και την πιο πρόσφατη έκδοση της Python.
Για να εντοπίσουμε τις διαθέσιμες εκδόσεις gcc μπορούμε να χρησιμοποιήσουμε την εντολή:
module avail gcc
Μπορούμε εναλλακτικά να επιλέξουμε την default διαθέσιμη έκδοση με την εντολή:
module load gcc
Αφού ενεργοποιήσουμε το gcc module μπορούμε να αναζητήσουμε τις διαθέσιμες εκδόσεις της Python με την εντολή:
module avail python
Παλιότερες εκδόσεις από την Python 3.10
Σε κάποιες περιπτώσεις ίσως χρειαστεί να χρησιμοποιήσουμε παλιότερες εκδόσεις της Python καθώς, σε παλιότερα projects, πιθανώς υπάρχουν βιβλιοθήκες που δεν υποστηρίζουν τις πιο πρόσφατες εκδόσεις.
Είναι όμως προτιμότερο, οι παλιές εκδόσεις να αποφεύγονται καθώς μπορεί σύντομα να μην υποστηρίζονται.
Συγκεκριμένες πληροφορίες σχετικά με την κατάσταση υποστήριξης των εκδόσεων της Python μπορείτε να βρείτε στο Python Developer's Guide.
Παράδειγμα χρήσης¶
Σε αυτό το παράδειγμα θα δούμε πώς υποβάλλουμε δοκιμαστικά μία εργασία Python.
Δημιουργούμε ένα Python script, το οποίο χρησιμοποιεί το built-in module math και τυπώνει την τετραγωνική ρίζα ενός αριθμού, έστω math_example.py:
Python script
import math
x = math.sqrt(64)
print(x)
Για την υποβολή της εργασίας, χρησιμοποιούμε το submission script, έστω python-nefeli-test.sh όπως φαίνεται παρακάτω:
Submission Script
#!/bin/bash
#SBATCH -J python-test-case
#SBATCH -t 01:00
# Load the required modules
module load gcc/14.2.0 python/3.14.0
# Print python version
python -c 'import sys; print(sys.version)'
# Run a python script
python math_example.py
Υποβάλλουμε το παραπάνω script προς εκτέλεση με την εντολή:
sbatch python-test-case.sh
Εαν το επιθυμούμε, μπορούμε να παρακολουθήσουμε την πορεία της εργασίας με την εντολή squeue.
Κεντρικά εγκατεστημένα Python packages¶
Για να χρησιμοποιήσουμε κάποιο από τα κεντρικά εγκατεστημένα Python packages, θα χρειαστεί να ενεργοποιήσουμε στο terminal ή στο script υποβολής το αντίστοιχο module:
module load gcc/14.2.0 py-pip/25.1.1-wzrtv4o
Python built-in virtual environments (venv)¶
Για να προσθέσουμε κάποιο Python package που δεν είναι κεντρικά εγκατεστημένο, είναι προτιμότερο να δημιουργήσουμε ένα virtual environment.
Info
Τα virtual environments προσφέρουν την δυνατότητα εγκατάστασης Python packages σε ξεχωριστό περιβάλλον για κάθε διαφορετικό project. Έτσι, μπορούμε να ενεργοποιούμε το virtual environment που χρειαζόμαστε κατά περίπτωση. Επίσης, διευκολύνουν την μεταφορά ενός project, καθώς, αφού δημιουργήσουμε ένα python virtual environment μπορούμε εύκολα να το "αντιγράψουμε" σε άλλο περιβάλλον.
Ο πιο εύκολος και σύντομος τρόπος να δημιουργήσουμε ένα python virtual environment είναι να χρησιμοποιήσουμε το built-in venv module της Python. Για παράδειγμα, μπορούμε να δημιουργήσουμε και να ενεργοποιήσουμε το environment myenv ως εξής:
module load gcc/14.2.0 python/3.14.0
python -m venv myenv
source myenv/bin/activate
Στο περιβάλλον που έχουμε δημιουργήσει είναι χρήσιμο να κάνουμε upgrade τον standard package manager της Python (pip) στην latest διαθέσιμη έκδοση, πριν προχωρήσουμε στην έγκατάστση επιπλέον packages.
Upgrade pip
pip install --upgrade pip
Terminal output
Requirement already satisfied: pip in /apps/nefeli/software-stack/site/linux-x86_64/none-none/py-pip-25.1.1-wzrtv4oum7tcxtjhx2hqzq3yjm4542wj/lib/python3.14/site-packages (25.1.1)
Collecting pip
Downloading pip-26.0.1-py3-none-any.whl.metadata (4.7 kB)
Downloading pip-26.0.1-py3-none-any.whl (1.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 19.5 MB/s eta 0:00:00
Installing collected packages: pip
...
Successfully installed pip-25.2
Για να εγκαταστήσουμε επιπλέον packages στο environment, θα χρησιμοποιήσουμε την εντολή pip install ως εξής:
Install python packages
pip install numpy pandas
pip install ray
Εαν θέλουμε να είμαστε σίγουροι, μπορούμε να ελέγξουμε την έκδοση της Python σε ένα environment με την παρακάτω εντολή:
Find Python version in environment
python --version
Για να απενεργοποιήσουμε το python venv μπορούμε να χρησιμοποιήσουμε την εντολή deactivate.
Deactivate virtual environment
deactivate
Αν καταλάθος απενεργοποιήσουμε το περιβάλλον με τις διεργασίες μας, δεν χρειάζεται πανικός. Σε οποιαδήποτε περίπτωση μπορούμε να το επαναφέρουμε ως εξής:
Reactivate environment
source myenv/bin/activate
Με τον ίδιο τρόπο μπορούμε να ενεργοποιήσουμε οποιοδήποτε virtual environment θέλουμε χωρίς να χρειάζεται να προσθέσουμε εκ νέου τα python packages που έχουμε ήδη εγκαταστήσει σε αυτό.
Η χρήση της εντολής pip freeze μας επιστρέφει τη λίστα των εγκατεστημένων πακέτων. Έτσι, μπορούμε να μεταφέρουμε την εγκατάσταση σε άλλο υπολογιστικό περιβάλλον ή για να δημιουργήσουμε ένα πανομοιότυπο virtual environment.
Freeze and copy environment
pip freeze > requirements.txt
deactivate
python -m venv myenv2
source myenv2/bin/activate
pip install -r requirements.txt
Για να εγκαταστήσουμε ένα επιπλέον πακέτο σε ένα environment μπορούμε να το προσθέσουμε στο requirements.txt. Στην συνέχεια, αφού ενεργοποιήσουμε το environment, θα χρειαστεί να τρέξουμε εκ νέου την εντολή pip install -r requirements.txt ή να εγκαταστήσουμε το πακέτο με την εντολή pip install:
Install additional package
source myenv/bin/activate
pip install <package-name>
Για να διαγράψουμε οριστικά ένα environment, μπορούμε να διαγράψουμε τα αρχεία που δημιουργήθηκαν στο directory του environment ως εξής:
Delete existing environment
rm -r myenv
Αν θέλουμε να χρησιμοποιήσουμε τα πακέτα που έχουμε εγκαταστήσει στο virtual environment, πρέπει να συμπεριλάβουμε την εντολή source <env>/bin/activate στο batch job μας.
Batch job using a virtual environment
#!/bin/bash
#SBATCH option1=value1
#SBATCH option2=value2
module load gcc/14.2.0 python/3.14.0
source <env>/bin/activate
MPI εργασίες με Python¶
Για να δημιουργήσετε τις δικές σας MPI εργασίες με Python μπορείτε να ακολουθήσετε τις οδηγίες στην ενότητα: MPI εργασίες με Python