Module

Depuis l'été 2015, le cluster MBB et celui de l'ISE-M sont passés sous module pour gérer python (voir lien). Il faut donc penser à précéder votre ligne de commande par module load python... dans votre script de soumission SGE (points de suspension correspondants à la version désirée). De même, les packages doivent être installés dans votre environnement utilisateur (home).

Version de python

2 versions sont disponibles au travers de module.

module avail
# ou
module av

Vous pouvez ensuite charger la version que vous souhaitez ainsi :

module load python/2.7
# ou
module add python/2.7
module add python/3

Et l'enlever ainsi :

module unload python/3
# ou
module rm python/3

Pour un script de soumission, n'oubliez pas d'insérer ce type de ligne avant de lancer votre code en python. De plus, regardez les sources. Parfois l'entête du fichier python appelle directement une version de python comme par exemple #!/usr/bin/python qui cargera la version 2.7 par défaut. Il vaut mieux modifier cet entète (ou Shebang), en #!/usr/bin/env python.

Installer un module Python

En python, vous pouvez télécharger les sources d'un package et lancer :

python setup.py install --user

Ou utiliser pip :

# si python2.7
module load python/2.7
pip install --user monmodule
# si python3
module load python/3
pip3 install --user monmodule

Utiliser une autre version de python avec pyenv

Si les versions disponibles dans module ou depuis le système ne suffisent pas, vous pouvez voir comment utiliser pyenv

Ce dernier se combine bien avec virtualenv.

Installer conda

Il faut utiliser pyenv ci-dessus. Merci de passer l'étape installing pyenv si c'est déjà fait (idem pour les virtualenvs)...

module add openssl-1.1.0b curldev

# installing pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

. .bashrc

# installing virtualenv
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc

. ~/.bashrc

# pour lister toutes les versions de conda disponibles
pyenv install conda

# on en choisit une
pyenv install miniconda3-3.9.1
# si vous avez une erreur 403/Forbidden, merci d'essayer une autre version
pyenv local miniconda3-3.9.1

conda --version
> conda 4.3.30

# pour utiliser un virtualenv avec conda il faut conda >= 4.6
# cf. https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html
pyenv install miniconda3-4.3.30
pyenv local miniconda3-4.3.30
conda --version
> conda 4.6.14
conda create --name conda_venv4.6
conda activate conda_venv4.6

# on desactive le tout pour revenir à la version système de python
conda deactivate conda_venv4.6
pyenv local system

Note : vous pouvez aussi utiliser virtualenv avec pyenv au lieu de conda (voir ex. ci-dessous avec snakemake)

Installer snakemake

Il faut utiliser pyenv ci-dessus. Merci de passer l'étape installing pyenv si c'est déjà fait (idem pour les virtualenvs)...

module add openssl-1.1.0b curl-7.50.3

# installing pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

. ~/.bashrc

# installing virtualenv
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc

. ~/.bashrc

pyenv install 3.6.7
pyenv local 3.6.7

pyenv version
3.6.7 (set by ~/.python-version)
which pip
> ~/.pyenv/shims/pip
pip --version
pip 10.0.1 from ~/.pyenv/versions/3.6.7/lib/python3.6/site-packages/pip (python 3.6)

# creating the virtualenv from our current python version
pyenv virtualenv venv3.6
pyenv activate venv3.6

pip install snakemake
snakemake --help
....

# pour quitter le virtualenv
pyenv deactivate
# pour revenir à un version système de python
pyenv local system

Bloc vide

En python un bloc ne peut jamais être vide, aussi dispose-t-on du mot-clé "pass":

if a > 0:
    pass
else:
    print("et voilà")

Installer un package avec dependances

Normalement, conda et pyenv + virtualenv (voir installations ci-dessus) permettent de s'en sortir. Si ce n'est pas suffisant, merci de vous reporter à la section sur les conteneurs singularity. En effet, nous ne pouvons pas surcharger les disques de tous les noeuds en installations nombreuses et parfois exotiques (avec parfois des problèmes de stabilité, de non compatibilité entre packages ou de dépendances croisées)...

results matching ""

    No results matching ""