Περιγραφή¶
Python is a high-level, general-purpose programming language.
Python versions¶
Με την παρακάτω εντολή μπορούμε να δούμε όλες τις κεντρικά εγκατεστημένες εκδόσεις της Python
:
$ module spider python
Αφού επιλέξουμε μία έκδοση, μπορούμε να τρέξουμε την εντολή module spider
ώστε να εντοπίσουμε τα modules που θα χρειαστεί να κάνουμε load για να την χρησιμοποιήσουμε. Για παράδειγμα:
$ module spider python/3.10.10
Terminal output
You will need to load all module(s) on any one of the lines below before the "python/3.10.10-abxdifo" module is available to load.
gcc/12.2.0
Help:
The Python programming language.
Επομένως, για να χρησιμοποιήσουμε την python/3.10.10
, θα χρειαστεί να κάνουμε προηγουμένως load το module gcc/12.2.0
. Επομένως, μπορούμε να τρέξουμε την module load
ως εξής:
$ module load gcc/12.2.0 python/3.10.10
Ποια έκδοση 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
στο EESSI ως εξής:
$ source $EESSI_INIT
$ module avail Python
$ module load Python/<version>
Παλιότερες εκδόσεις από την 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-test-case.sh
:
Submission Script
#!/bin/bash
#SBATCH -J python-test-case
#SBATCH -t 01:00
# Load the required modules
module load gcc/12.2.0 python/3.10.10
# 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
.
Το αναμενόμενο αποτέλεσμα φαίνεται στο αρχείο slurm-*.out
:
Terminal output
3.10.10 (main, Sep 7 2023, 09:23:54) [GCC 12.2.0]
8.0
Κεντρικά εγκατεστημένα Python
packages¶
Για να χρησιμοποιήσουμε κάποιο από τα κεντρικά εγκατεστημένα Python packages, θα χρειαστεί να ενεργοποιήσουμε στο terminal ή στο script υποβολής το αντίστοιχο module:
$ module load gcc/12.2.0 py-jupyter-core
How to find the available packages
Ένας σύντομος τρόπος για να εντοπίσουμε τα κεντρικά διαθέσιμα Python
packages είναι να ενεργοποιήσουμε ένα gcc
module και στην συνέχεια να τρέξουμε την εντολή module avail
:
Module avail
$ module load gcc/12.2.0
$ module avail py-
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/12.2.0 python/3.10.10
$ python -m venv myenv
$ source myenv/bin/activate
Στο περιβάλλον που έχουμε δημιουργήσει είναι χρήσιμο να κάνουμε upgrade
τον standard package manager της Python
(pip
) στην latest διαθέσιμη έκδοση, πριν προχωρήσουμε στην έγκατάστση επιπλέον packages.
Upgrade pip
$ pip install --upgrade pip
Για να εγκαταστήσουμε επιπλέον packages στο environment, θα χρησιμοποιήσουμε την εντολή pip install
ως εξής:
Install python packages
$ pip install numpy pandas
$ pip install ray
Για να απενεργοποιήσουμε το python venv
μπορούμε να χρησιμοποιήσουμε την εντολή deactivate
.
Deactivate virtual environment
(myenv) $ deactivate
$
Στην συνέχεια μπορούμε να ενεργοποιήσουμε όποιο virtual environment
επιλέξουμε.
Σημειώνουμε ότι δεν χρειάζεται να προσθέσουμε εκ νέου τα python packages
που έχουμε ήδη εγκαταστήσει σε αυτό.
Activate virtual environment
$ source <virtual_env_name>/bin/activate
Μπορούμε να ελέγξουμε την έκδοση της Python
σε ένα environment με την παρακάτω εντολή:
Find Python version in environment
(myenv) $ python --version
Python 3.11.7
Επίσης μπορούμε να πάρουμε μία λίστα των εγκατεστημένων πακέτων με την εντολή pip freeze
. Έτσι, μπορούμε να μεταφέρουμε την εγκατάσταση σε άλλο υπολογιστικό περιβάλλον ή για να δημιουργήσουμε ένα πανομοιότυπο virtual environment
.
Freeze and copy environment
$ source myenv/bin/activate
(myenv) $ pip freeze > requirements.txt
(myenv) $ deactivate
$ python -m venv myenv2
$ source myenv2/bin/activate
(myenv2) $ pip install -r requirements.txt
Για να εγκαταστήσουμε ένα επιπλέον πακέτο σε ένα environment μπορούμε να το προσθέσουμε στο requirements.txt
. Στην συνέχεια, αφού ενεργοποιήσουμε το environment, θα χρειαστεί να τρέξουμε εκ νέου την εντολή pip install -r requirements.txt
ή να εγκαταστήσουμε το πακέτο με την εντολή pip install
:
Install additional package
$ source myenv/bin/activate
(myenv) $ pip install <package-name>
Για να διαγράψουμε ένα environment, μπορούμε να διαγράψουμε τα αρχεία που δημιουργήθηκαν στο directory του environment ως εξής:
Delete existing environment
$ rm -r myenv
Μπορούμε να χρησιμοποιήσουμε ένα virtual environment
στις εργασίες που υποβάλλουμε στην υπολογιστική συστοιχία, προσθέτοντας την αντίστοιχη εντολή source <env>/bin/activate
στο script υποβολής της εργασίας.