Μετάβαση στο περιεχόμενο

Χρήση Conda

Περιγραφή

Το Anaconda είναι μια ελεύθερη και open-source συλλογή πακέτων, των γλωσσών προγραμματισμού Python και R, για την επιστημονική πληροφορική (επιστήμη δεδομένων, εφαρμογές μηχανικής μάθησης, επεξεργασία δεδομένων μεγάλης κλίμακας, προγνωστικά αναλύσεις κλπ.), που αποσκοπεί στην απλοποίηση της διαχείρισης πακέτων.

Το Anaconda περιέχει μια σύλλογη εκατοντάδων πακέτων, μεταξύ αυτών, τον package manager, conda, ο οποίος μπορεί πολύ εύκολα να εγκαταστήσει και να ενημερώσει τα επιθυμητά πακέτα αλλά και τα dependencies τους.

Το conda είναι επίσης environment manager. Αυτό σημαίνει ότι μπορούμε εύκολα να δημιουργούμε και να εναλλάσουμε εικονικά περιβάλλοντα. Αυτό είναι πολύ χρήσιμο, στην περίπτωση που θέλουμε να έχουμε διαφορετικές εκδόσεις από κάποιο εργαλείο ή ζητείται από κάποιο πρόγραμμα, έτσι μπορούμε να δημιουργήσουμε ένα νέο εικονικό περιβάλλον και να μην επηρεάσουμε το σύστημα μας. Για όποιον έχει εμπειρία από τον pip manager, είναι παρόμοιο με το virtualenv.

Για τη χρήση του package και environment manager conda στην ιδρυματική συστοιχία, παρέχεται μία κεντρική εγκατάσταση του πακέτου miniconda, το οποίο είναι μέρος της συλλογής Anaconda και περιέχει μόνο τον package manager conda.

Αυτό σημαίνει ότι οποιαδήποτε πακέτα της συλλογής Anaconda θέλουμε να χρησιμοποιήσουμε πρέπει να εγκατασταθούν σε κάποιο εικονικό περιβάλλον όπως φαίνεται στη συνέχεια.

Κεντρική εγκατάσταση του conda

Η ιδρυματική συστοιχία "Αριστοτέλης" παρέχει μία κεντρική εγκατάσταση του miniconda, για τη χρήση της οποίας απαιτείται από το χρήστη, η αρχικοποίηση του περιβάλλοντος miniconda3.

Η αρχικοποίηση του περιβάλλοντος miniconda3 γίνεται με τις παρακάτω εντολές:

# module load gcc/<version> miniconda3
# source $CONDA_PROFILE/conda.sh

Χρήση

Base environment

Το conda ορίζει από μόνο του ένα default βασικό εικονικό περιβάλλον, το οποίο ονομάζεται base.

Είναι σημαντικό να μην εγκαθιστούμε επιπλέον πακέτα στο base. Για να προσθέσουμε πακέτα δημιουργούμε ένα νέο conda environment.

  • Για να δημιουργήσουμε ένα νέο εικονικό περιβάλλον με όνομα newEnv, γράφουμε:

    # conda create --name newEnv
    
  • Για να το ενεργοποιήσουμε και να μεταβούμε σε αυτό, γράφουμε:

    # conda activate newEnv
    

    Αν η ενεργοποίηση έγινε επιτυχώς, θα δούμε το όνομα του εικονικού περιβάλλοντος στην αρχή του bash prompt.

    Terminal Output

    [username@aristotle4 ~]$ conda activate newEnv
    (newEnv) [username@aristotle4 ~]$ 
    

    Info

    Από εδώ και πέρα ό,τι αλλαγές και προσθήκες κάνουμε θα εφαρμοστούν στο newEnv.

  • Για να δούμε το σύνολο των περιβαλλόντων, μπορούμε να πληκτρολογήσουμε:

    # conda info --envs
    

    Το αποτέλεσμα θα είναι κάπως έτσι:

    Terminal Output

    (newEnv) [username@aristotle4 ~]$ conda info --envs
    # conda environments:
    #
    base           /mnt/apps/aristotle/site/linux-centos7-x86_64/gcc-8.2.0/miniconda3-4.5.11-oqs2mbgv3mmo3dll2f2rbxt4plfgyqzv
    newEnv      *  /home/<u>/<username>/.conda/envs/newEnv
    

    Info

    Ο αστερίσκος υποδεικνύει ποιό είναι το ενεργό εικονικό περιβάλλον.

  • Για να επιστρέψουμε στο base απλά γράφουμε:

    # conda deactivate
    
  • Για να δημιουργήσουμε τον κλώνο ενός εικονικού περιβάλλοντος που έχει όνομα newEnv, γράφουμε:

    # conda create --clone newEnv --name newEnv2
    
  • Τέλος, για να διαγράψουμε το εικονικό περιβάλλον και τα περιεχόμενα του, γράφουμε:

    # conda env remove --name newEnv
    

Python version

Για τη δημιουργία ενός νέου εικονικού περιβάλλοντος, το Anaconda χρησιμοποιεί την έκδοση της Python του συστήματος. Αν θέλουμε κάποια διαφορετική έκδοση, πρέπει να το ορίσουμε στην εντολή δημιουργίας. Για παράδειγμα:

# conda create --name newEnv python=3.4

Χειρισμός πακέτων

Ο σημαντικότερος λόγος που χρησιμοποιούμε το conda είναι η διαχείριση των πακέτων. Για να δούμε ποιά πακέτα έχουμε ήδη εγκατεστημένα στο εικονικό περιβάλλον που βρισκόμαστε, απλά γράφουμε στο τερματικό:

# conda list

Προφανώς θα πρέπει πρώτα να έχουμε ενεργοποιήσει το εικονικό περιβάλλον όπως δείξαμε παραπάνω.

  • Για να αναζητήσουμε κάποιο πακέτο στο repository του Anaconda χρησιμοποιούμε την εντολή:

    # conda search <package>
    

    Το σύνολο των διαθέσιμων πακέτων μπορεί να βρεθεί εδώ.

    Προσθήκη Channels

    Τα channels είναι repositories στα οποία το conda package manager μπορεί να αναζητήσει πακέτα για εγκατάσταση. Εάν κάποιο πακέτο που θέλουμε να εγκαταστήσουμε δεν είναι διαθέσιμο στα default channels, μπορούμε να προσθέσουμε ένα επιπλέον channel με την εντολή:

    # conda config --add channels <new_channel>
    

    Προτεραιότητα του channel

    Η παραπάνω εντολή προσθέτει το νέο channel στην κορυφή της λίστας με αποτέλεσμα να αποκτά την υψηλότερη προτεραιότητα. Περισσότερες πληφορορίες σχετικά με το θέμα είναι διαθέσιμες στο conda.io

    Για παράδειγμα, ενα χρήσιμο channel για bioinformatics software είναι το Bioconda. Εφόσον έχουμε εγκαταστήσει το Αnaconda, για να προσθέσουμε το Bioconda αρκεί να τρέξουμε τις εντολές που αναφέρονται εδώ.

  • Για να εγκαταστήσουμε ενα πακέτο χρησιμοποιούμε την εντολή:

    # conda install <package>
    

    Εγκατάσταση πολλαπλών πακέτων με μία εντολή

    Αν τα πακέτα που θέλουμε να χρησιμοποιήσουμε είναι περισσότερα του ενός, προτείνεται να γίνεται εγκατάσταση των ζητούμενων πακέτων με την εντολή conda install, ακολουθούμενη από τα πακέτα χωρισμένα με κενό. Με αυτό τον τρόπο, είμαστε σίγουροι ότι δεν θα υπάρξει dependecy conflict μεταξύ των πακέτων.

    # conda install spyder pathlib2
    
  • Χρησιμοποιώντας την conda list μπορούμε να δούμε αν προστέθηκε στη λίστα του εικονικού περιβάλλοντος το πακέτο μας. Μπορούμε, επίσης, να δούμε το ιστορικό των αλλαγών στο εικονικό περιβάλλον γράφοντας:

    # conda list --revisions
    
  • Για να ενημερώσουμε ενα πακέτο, απλά γράφουμε:

    # conda update <package>
    
  • Τέλος, για να αφαιρέσουμε ενα ή περισσότερα πακέτα από το εικονικό περιβάλλον στο οποίο βρισκόμαστε, γράφουμε:

    # conda remove spyder pathlib2
    

Χρήση του conda στη συστοιχία

Για να χρησιμοποιήσουμε το conda σε μια εργασία την οποία θέλουμε να υποβάλλουμε στην ιδρυματική συστοιχία αρκεί να προσθέσουμε στο script μας, πριν τις εντολές του conda, τις ακόλουθες εντολές:

# module load gcc miniconda3
# source $CONDA_PROFILE/conda.sh
# conda activate myEnv
# export PATH=$CONDA_PREFIX/bin:$PATH

Παράδειγμα batch script

#!/bin/bash
#SBATCH -J conda-test

# conda commands
module load gcc miniconda3
source $CONDA_PROFILE/conda.sh
conda activate myEnv
export PATH=$CONDA_PREFIX/bin:$PATH

# code to be executed

Περισσότερες πληροφορίες

Περισσότερες πληροφορίες για την υποβολή εργασιών, θα βρείτε στην ενότητα Σειριακές εργασίες.

Για πιο προχωρημένα θέματα σχετικά με το conda, μπορείτε να συμβουλευτείτε το επίσημο documentation.