virtualenv --system-site-packages
[davin.git] / ateliers / debian-python-virtualenv / .ipynb_checkpoints / mtlpy-workshop-debian-dev-env-fr-checkpoint.ipynb
CommitLineData
00e8dd56
DB
1{
2 "metadata": {
3 "name": ""
4 },
5 "nbformat": 3,
6 "nbformat_minor": 0,
7 "worksheets": [
8 {
9 "cells": [
10 {
11 "cell_type": "markdown",
12 "metadata": {},
13 "source": [
f5813acc 14 "# Debian + Python + virtualenv\n",
00e8dd56 15 "\n",
f5813acc 16 "Debian + Python (+ virtualenv) = \u2661\n",
00e8dd56
DB
17 "\n",
18 "## Introduction\n",
19 "\n",
f5813acc
DB
20 "Pr\u00e9requis\n",
21 "\n",
22 "* Avoir install\u00e9 une distribution Linux bas\u00e9e sur Debian\n",
23 "* \u00catre administrateur du syst\u00e8me (\u00eatre sudoer)\n",
24 "\n",
25 "Objectifs\n",
26 "\n",
27 "* Installer les paquets Debian essentiels pour le d\u00e9veloppement Python\n",
28 "* S'initier aux environnements virtuels Python \n",
00e8dd56 29 "\n",
f5813acc
DB
30 "## Environnement de d\u00e9veloppement Python sur une Linux bas\u00e9e Debian\n",
31 "\n",
32 "### Python\n",
33 "\n",
34 "Python est d\u00e9j\u00e0 install\u00e9 par d\u00e9faut... c'est bien!\n",
00e8dd56
DB
35 "\n",
36 "* Lancer un terminal<pre>\n",
37 "$\n",
38 "</pre>\n",
39 "\n",
40 "* Lancer Python<pre>\n",
41 "$ python\n",
42 "</pre>\n",
43 "\n",
44 "* Identifier la version par d\u00e9faut de Python<pre>\n",
45 "$ python\n",
46 "Python 2.7.3 (default, Jan 2 2013, 16:53:07) \n",
47 "[GCC 4.7.2] on linux2\n",
48 "Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n",
49 "<<<\n",
50 "</pre>\n",
51 "\n",
52 "* Coder un truc<pre>\n",
53 "<<< print \"Hello World!\"\n",
54 "Hello World!\n",
55 "</pre>\n",
56 "\n",
f5813acc 57 "* Dans la vraie vie on \u00e9crit des scripts... donc il faut installer au moins un \u00e9diteur de texte... mais rendu l\u00e0, on va se monter un environnement de d\u00e9veloppement complet\n",
00e8dd56 58 "\n",
f5813acc 59 "### Debian : installer un paquet Debian\n",
00e8dd56
DB
60 "\n",
61 "Comment trouver un paquet\n",
62 "\n",
553db694
DB
63 "* Web : tous les paquets : [http://packages.debian.org/fr/stable/allpackages](http://packages.debian.org/fr/stable/allpackages)\n",
64 "* Web : tous les paquets par cat\u00e9gorie : [http://packages.debian.org/fr/stable/](http://packages.debian.org/fr/stable/)\n",
65 "* Web : paquets Python : [http://packages.debian.org/fr/stable/python/](http://packages.debian.org/fr/stable/python/)\n",
00e8dd56 66 "\n",
f5813acc 67 "Comment installer (mettre \u00e0 jour et supprimer) un paquet\n",
00e8dd56
DB
68 "\n",
69 "* Mode graphique : o\u00f9 aller<pre>\n",
70 "Applications > Outils syst\u00e8me > Ajouter/supprimer des logiciels\n",
71 "</pre>\n",
72 "* Ligne de commande : voici la commande<br />\n",
553db694
DB
73 "(remplacer \"package-name\" avec le nom du paquet que vous voulez installer/mettre \u00e0 jour/supprimer)\n",
74 "<pre>\n",
75 "$ sudo apt-get install package-name\n",
76 "</pre>\n",
77 "<pre>\n",
78 "$ sudo apt-get update package-name\n",
79 "</pre>\n",
80 "<pre>\n",
00e8dd56
DB
81 "$ sudo apt-get remove package-name\n",
82 "</pre>\n",
83 "\n",
f5813acc 84 "### \u00c9diteur texte\n",
00e8dd56 85 "\n",
f5813acc 86 "Un \u00e9diteur pour \u00e9crire des scripts...<br />\n",
553db694 87 "[http://packages.debian.org/fr/stable/editors/](http://packages.debian.org/fr/stable/editors/)\n",
00e8dd56
DB
88 "\n",
89 "* Mode graphique : gedit est d\u00e9j\u00e0 l\u00e0\n",
90 "* Ligne de commande : emacs, vim, nano\n",
91 "* Quel choisir? une question de go\u00fbt\n",
f5813acc 92 "* Utile : coloration syntaxique, indentation en bloc, auto-compl\u00e9tion, masquer/afficher bloc de code...\n",
00e8dd56
DB
93 "* Paquets Debian = \n",
94 "<pre>\n",
25d38a03
DB
95 "$ sudo apt-get install emacs<br />\n",
96 "$ sudo apt-get install vim<br />\n",
00e8dd56
DB
97 "$ sudo apt-get install nano\n",
98 "</pre>\n",
99 "\n",
f5813acc
DB
100 "### Python : interpr\u00e9teur Python\n",
101 "\n",
102 "Interpr\u00e9teur Python d\u00e9j\u00e0 l\u00e0, mais pourquoi ne pas aller plus loin?\n",
00e8dd56
DB
103 "\n",
104 "* IPython : interpr\u00e9teur interactif<br />\n",
105 "pourquoi IPython?\n",
f5813acc 106 "* IPython notebook : pourrait \u00eatre utile pour les futurs ateliers de formation :)\n",
00e8dd56
DB
107 "* Paquets Debian = \n",
108 "<pre>\n",
25d38a03 109 "$ sudo apt-get install ipython<br />\n",
00e8dd56
DB
110 "$ sudo apt-get install ipython-notebook\n",
111 "</pre>\n",
112 "\n",
f5813acc
DB
113 "### Gestion des versions\n",
114 "\n",
115 "S'outiller pour suivre l'historique des versions de son code\n",
00e8dd56
DB
116 "\n",
117 "* Pourquoi g\u00e9rer les versions du code source?\n",
118 "* Quel choisir? git, mercurial...\n",
119 "* Paquets Debian = \n",
120 "<pre>\n",
25d38a03
DB
121 "$ sudo apt-get install git<br />\n",
122 "$ sudo apt-get install gitk<br />\n",
00e8dd56
DB
123 "$ sudo apt-get install mercurial\n",
124 "</pre>\n",
125 "\n",
f5813acc 126 "### Extensions Python\n",
00e8dd56
DB
127 "\n",
128 "* Les extensions Python \u00e9crites dans d'autres langages pourraient \u00eatre n\u00e9cessaires, donc il nous faut des outils pour pouvoir les compiler<br />\n",
129 "ex.: gcc, pil...\n",
130 "* build-essentials, python-dev (sources de Python)\n",
131 "* Paquets Debian = \n",
132 "<pre>\n",
25d38a03 133 "$ sudo apt-get install build-essential<br />\n",
00e8dd56
DB
134 "$ sudo apt-get install python-dev\n",
135 "</pre>\n",
136 "\n",
f5813acc 137 "### Environnements virtuels\n",
00e8dd56 138 "\n",
f5813acc 139 "* Pour installer des logiciels seulement au niveau projet\n",
00e8dd56
DB
140 "* virtualenv\n",
141 "* Paquet Debian = \n",
142 "<pre>\n",
143 "$ sudo apt-get install python-virtualenv\n",
144 "</pre>\n",
145 "\n",
f5813acc 146 "### Outils Python offerts en paquet Debian\n",
00e8dd56
DB
147 "\n",
148 "Science\n",
149 "\n",
150 "* matplotlib, numpy\n",
151 "* Pour quoi?\n",
152 "* Paquets Debian =\n",
153 "<pre>\n",
25d38a03 154 "$ sudo apt-get install python-matplotlib<br />\n",
00e8dd56
DB
155 "$ sudo apt-get install python-numpy\n",
156 "</pre>\n",
157 "\n",
158 "Frameworks web\n",
159 "\n",
160 "* Django, Pyramid\n",
161 "* Pour quoi? Quel choisir?\n",
162 "* Paquets Debian =\n",
163 "<pre>\n",
25d38a03 164 "$ sudo apt-get install python-django<br />\n",
00e8dd56
DB
165 "$ sudo apt-get install python-pyramid\n",
166 "</pre>\n",
167 "\n",
f5813acc 168 "Pilotes de base de donn\u00e9es\n",
00e8dd56
DB
169 "\n",
170 "* mysqldb, psycopg, sqlalchemy\n",
171 "* Pour quoi? Quel choisir?\n",
172 "* Paquets Debian =\n",
173 "<pre>\n",
25d38a03
DB
174 "$ sudo apt-get install python-mysqldb<br />\n",
175 "$ sudo apt-get install python-psycopg2<br />\n",
00e8dd56
DB
176 "$ sudo apt-get install python-sqlalchemy\n",
177 "</pre>\n",
178 "\n",
f5813acc
DB
179 "## Environnements virtuels Python\n",
180 "\n",
181 "Logiciels install\u00e9s au niveau syst\u00e8me (system-wide) vs install\u00e9s au niveau projet (project-wide)\n",
182 "\n",
183 "* Niveau syst\u00e8me : pour tous les projets, via paquets Debian (pourrait n\u00e9cessiter \"sudo\")\n",
184 "* Niveau projet : propre au projet, via paquets Python dans un environnement virtuel Python, permet utilisation d'une version sp\u00e9cifique\n",
185 "\n",
186 "## Virtualenv\n",
187 "\n",
25d38a03 188 "[http://www.virtualenv.org](http://www.virtualenv.org)\n",
f5813acc
DB
189 "\n",
190 "Cr\u00e9er un environnement virtuel Python\n",
191 "\n",
192 "* qui s'ajoute \u00e0 celui du syst\u00e8me\n",
193 "<pre>\n",
5df182ad 194 "$ virtualenv --system-site-packages env\n",
f5813acc
DB
195 "</pre>\n",
196 "\n",
197 "* compl\u00e8tement isol\u00e9 du syst\u00e8me\n",
198 "<pre>\n",
199 "$ virtualenv --no-site-packages env\n",
200 "</pre>\n",
201 "\n",
202 "* instance locale de Python dans l'environnement virtuel\n",
203 "\n",
204 "* supprimer le distribute.tar.gz si ajout\u00e9 par virtualenv, ex.:\n",
205 "<pre>\n",
206 "$ rm distribute-0.6.10.tar.gz\n",
207 "</pre>\n",
208 "\n",
209 "Supprimer un environnement virtuel Python\n",
210 "\n",
211 "* simplement supprimer le r\u00e9pertoire cr\u00e9\u00e9\n",
212 "<pre>\n",
213 "$ rm -r env\n",
214 "</pre>\n",
215 "\n",
216 "Utiliser un environnement virtuel Python\n",
217 "\n",
218 "* activer l'environnement virtuel Python\n",
219 "<pre>\n",
220 "$ source env/bin/activate\n",
221 "</pre>\n",
222 "\n",
223 "* installer, mettre \u00e0 jour ou d\u00e9sintaller des paquets Python avec pip\n",
224 "\n",
225 "* d\u00e9sactiver l'environnement virtuel Python\n",
226 "<pre>\n",
227 "(env)$ deactivate\n",
228 "</pre>\n",
229 "\n",
230 "## pip\n",
231 "\n",
25d38a03 232 "[http://www.pip-installer.org](http://www.pip-installer.org)\n",
f5813acc
DB
233 "\n",
234 "Installer et g\u00e9rer les paquets Python.\n",
235 "\n",
236 "* trouver les paquets \u00e0 installer : pypi<br />\n",
25d38a03 237 "[https://pypi.python.org](https://pypi.python.org)<br />\n",
f5813acc 238 "Exemple :<br />\n",
25d38a03 239 "ipython : [https://pypi.python.org/pypi/ipython/1.0.0](https://pypi.python.org/pypi/ipython/1.0.0)\n",
f5813acc
DB
240 "* cr\u00e9er un fichier requirements.txt dans votre projet\n",
241 "* ajouter un paquet requis par ligne (avec les versions autoris\u00e9es)<br />\n",
25d38a03 242 "[http://www.pip-installer.org/en/latest/cookbook.html#requirements-files](http://www.pip-installer.org/en/latest/cookbook.html#requirements-files)<br />\n",
f5813acc
DB
243 "Exemple :\n",
244 "<pre>\n",
245 "ipython == 1.0.0\n",
246 "</pre>\n",
247 "\n",
248 "* installer avec pip\n",
249 "<pre>\n",
250 "(env)$ pip install -r requirements.txt\n",
251 "</pre>\n",
252 "\n",
253 "* voir les versions des paquets Python accessibles au projet\n",
254 "<pre>\n",
255 "(env)$ pip freeze\n",
256 "</pre>\n",
257 "\n",
258 "* utiliser les paquets<br />\n",
259 "Exemple :\n",
260 "<pre>\n",
25d38a03 261 "(env)$ ipython<br />\n",
f5813acc
DB
262 "(env)$ ipython notebook\n",
263 "</pre>\n",
264 "\n",
265 "* ajouter autres d\u00e9pendances au besoin et les installer\n",
266 "\n",
267 "* supprimer des d\u00e9pendances\n",
268 "<pre>\n",
269 "(env)$ pip uninstall ipython\n",
270 "</pre>\n",
271 "\n",
272 "\n",
00e8dd56
DB
273 "## Conclusion\n",
274 "\n",
275 "Eh bien...\n",
276 "\n",
277 "* Pas besoin de grand chose\n",
278 "* Tout est l\u00e0 dans Debian\n",
f5813acc 279 "* On contr\u00f4le et comprend son environnement de d\u00e9veloppement avec virtualenv et pip\n",
00e8dd56
DB
280 "* C'est simple et l'fun!\n",
281 "\n",
282 "## En suite?\n",
283 "\n",
f5813acc 284 "Pour aller plus loin :\n",
00e8dd56 285 "\n",
553db694 286 "* paquets Debian pour Python : [http://packages.debian.org/fr/stable/python/](http://packages.debian.org/fr/stable/python/)\n",
00e8dd56 287 "\n",
25d38a03 288 "* paquets Python : [https://pypi.python.org](https://pypi.python.org)\n",
00e8dd56 289 "\n",
25d38a03 290 "* virtualenv : [http://www.virtualenv.org](http://www.virtualenv.org)\n",
00e8dd56 291 "\n",
25d38a03 292 "* pip : [http://www.pip-installer.org](http://www.pip-installer.org)\n"
00e8dd56 293 ]
00e8dd56
DB
294 }
295 ],
296 "metadata": {}
297 }
298 ]
299}