- Module
- Version de python
- Installer un module Python
- Utiliser une autre version de python avec pyenv
- Installer conda
- Installer snakemake
- Bloc vide
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 version2.7
par défaut. Il vaut mieux modifier cet entète (ouShebang
), 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)...