python.md 5.04 KB
Newer Older
1
2
<!-- toc -->

3
4
# Module

5
>**Warning** Depuis l'été 2015, le cluster MBB et celui de l'ISE-M sont passés sous module pour gérer python (voir [lien](cluster.md#utiliser-module)). 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](#installer-un-module-python) doivent être installés dans votre environnement utilisateur (home).
6

remy.d1's avatar
remy.d1 committed
7
8
# Version de python

remy's avatar
remy committed
9
2 versions sont disponibles au travers de [module](cluster.md#utiliser-module).
remy.d1's avatar
remy.d1 committed
10
11
12

```bash
module avail
13
14
# ou
module av
remy.d1's avatar
remy.d1 committed
15
16
```

17
18
Vous pouvez ensuite charger la version que vous souhaitez ainsi :

remy.d1's avatar
remy.d1 committed
19
```bash
remy's avatar
remy committed
20
module load python/2.7
21
# ou
remy's avatar
remy committed
22
module add python/2.7
remy.d1's avatar
remy.d1 committed
23
24
25
```

```bash
remy's avatar
remy committed
26
module add python/3
remy.d1's avatar
remy.d1 committed
27
28
```

29
30
Et l'enlever ainsi :

remy.d1's avatar
remy.d1 committed
31
```bash
remy's avatar
remy committed
32
module unload python/3
33
# ou
remy's avatar
remy committed
34
module rm python/3
remy.d1's avatar
remy.d1 committed
35
36
```

37
> **Warning** 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`](https://fr.wikipedia.org/wiki/Shebang)), en `#!/usr/bin/env python`.
remy.d1's avatar
remy.d1 committed
38
39
40

# Installer un module Python

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

remy.d1's avatar
remy.d1 committed
43
44
45
46
```bash
python setup.py install --user
```

remy's avatar
remy committed
47
Ou utiliser pip :
remy's avatar
remy committed
48

remy's avatar
remy committed
49
50
```bash
# si python2.7
remy's avatar
remy committed
51
module load python/2.7
remy's avatar
remy committed
52
53
pip install --user monmodule
# si python3
remy's avatar
remy committed
54
module load python/3
remy's avatar
remy committed
55
56
57
pip3 install --user monmodule
```

remy's avatar
remy committed
58
# Utiliser une autre version de python avec pyenv
remy.d1's avatar
remy.d1 committed
59

remy's avatar
remy committed
60
Si les versions disponibles dans *module* ou depuis le système ne suffisent pas, vous pouvez voir comment utiliser [pyenv](http://amaral-lab.org/resources/guides/pyenv-tutorial)
61

remy's avatar
remy committed
62
Ce dernier se combine bien avec [virtualenv](https://github.com/pyenv/pyenv-virtualenv).
remy's avatar
remy committed
63
64
65
66
67
68

# 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`)...

```bash
69
70
module add openssl-1.1.0b curldev

remy's avatar
remy committed
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# 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
remy's avatar
remy committed
95
96
97
98
99
100
101
102
103

# 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
remy's avatar
remy committed
104
105
106
107
108

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

remy's avatar
remy committed
109
```
110

remy's avatar
remy committed
111
Note : vous pouvez aussi utiliser virtualenv avec pyenv au lieu de conda (voir ex. ci-dessous avec _snakemake_)
remy's avatar
remy committed
112
113
114
115
116
117

# 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`)...

```bash
118
119
module add openssl-1.1.0b curl-7.50.3

remy's avatar
remy committed
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# 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
remy's avatar
remy committed
156
157
158
159
160
161
162
163
164
165
166
```

# Bloc vide

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

```python
if a > 0:
    pass
else:
    print("et voilà")
remy's avatar
remy committed
167
```
168
169
170
171
172

## 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](singularity.md). 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)...