nbviewer correctifs (pre multiligne, liens)
[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",
63 "* Web : tous les paquets : [http://packages.debian.org/stable/allpackages](http://packages.debian.org/fr/stable/allpackages)\n",
64 "* Web : tous les paquets par cat\u00e9gorie : [http://packages.debian.org/stable/](http://packages.debian.org/fr/stable/)\n",
65 "* Web : paquets Python : [http://packages.debian.org/stable/python/](http://packages.debian.org/en/stable/python/)\n",
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",
f5813acc 73 "(remplacer \"package-name\" avec le nom du paquet que vous voulez installer/mettre \u00e0 jour/supprimer)<pre>\n",
25d38a03
DB
74 "$ sudo apt-get install package-name<br />\n",
75 "$ sudo apt-get update package-name<br />\n",
00e8dd56
DB
76 "$ sudo apt-get remove package-name\n",
77 "</pre>\n",
78 "\n",
f5813acc 79 "### \u00c9diteur texte\n",
00e8dd56 80 "\n",
f5813acc 81 "Un \u00e9diteur pour \u00e9crire des scripts...<br />\n",
00e8dd56
DB
82 "[http://packages.debian.org/stable/editors/](http://packages.debian.org/stable/editors/)\n",
83 "\n",
84 "* Mode graphique : gedit est d\u00e9j\u00e0 l\u00e0\n",
85 "* Ligne de commande : emacs, vim, nano\n",
86 "* Quel choisir? une question de go\u00fbt\n",
f5813acc 87 "* Utile : coloration syntaxique, indentation en bloc, auto-compl\u00e9tion, masquer/afficher bloc de code...\n",
00e8dd56
DB
88 "* Paquets Debian = \n",
89 "<pre>\n",
25d38a03
DB
90 "$ sudo apt-get install emacs<br />\n",
91 "$ sudo apt-get install vim<br />\n",
00e8dd56
DB
92 "$ sudo apt-get install nano\n",
93 "</pre>\n",
94 "\n",
f5813acc
DB
95 "### Python : interpr\u00e9teur Python\n",
96 "\n",
97 "Interpr\u00e9teur Python d\u00e9j\u00e0 l\u00e0, mais pourquoi ne pas aller plus loin?\n",
00e8dd56
DB
98 "\n",
99 "* IPython : interpr\u00e9teur interactif<br />\n",
100 "pourquoi IPython?\n",
f5813acc 101 "* IPython notebook : pourrait \u00eatre utile pour les futurs ateliers de formation :)\n",
00e8dd56
DB
102 "* Paquets Debian = \n",
103 "<pre>\n",
25d38a03 104 "$ sudo apt-get install ipython<br />\n",
00e8dd56
DB
105 "$ sudo apt-get install ipython-notebook\n",
106 "</pre>\n",
107 "\n",
f5813acc
DB
108 "### Gestion des versions\n",
109 "\n",
110 "S'outiller pour suivre l'historique des versions de son code\n",
00e8dd56
DB
111 "\n",
112 "* Pourquoi g\u00e9rer les versions du code source?\n",
113 "* Quel choisir? git, mercurial...\n",
114 "* Paquets Debian = \n",
115 "<pre>\n",
25d38a03
DB
116 "$ sudo apt-get install git<br />\n",
117 "$ sudo apt-get install gitk<br />\n",
00e8dd56
DB
118 "$ sudo apt-get install mercurial\n",
119 "</pre>\n",
120 "\n",
f5813acc 121 "### Extensions Python\n",
00e8dd56
DB
122 "\n",
123 "* Les extensions Python \u00e9crites dans d'autres langages pourraient \u00eatre n\u00e9cessaires, donc il nous faut des outils pour pouvoir les compiler<br />\n",
124 "ex.: gcc, pil...\n",
125 "* build-essentials, python-dev (sources de Python)\n",
126 "* Paquets Debian = \n",
127 "<pre>\n",
25d38a03 128 "$ sudo apt-get install build-essential<br />\n",
00e8dd56
DB
129 "$ sudo apt-get install python-dev\n",
130 "</pre>\n",
131 "\n",
f5813acc 132 "### Environnements virtuels\n",
00e8dd56 133 "\n",
f5813acc 134 "* Pour installer des logiciels seulement au niveau projet\n",
00e8dd56
DB
135 "* virtualenv\n",
136 "* Paquet Debian = \n",
137 "<pre>\n",
138 "$ sudo apt-get install python-virtualenv\n",
139 "</pre>\n",
140 "\n",
f5813acc 141 "### Outils Python offerts en paquet Debian\n",
00e8dd56
DB
142 "\n",
143 "Science\n",
144 "\n",
145 "* matplotlib, numpy\n",
146 "* Pour quoi?\n",
147 "* Paquets Debian =\n",
148 "<pre>\n",
25d38a03 149 "$ sudo apt-get install python-matplotlib<br />\n",
00e8dd56
DB
150 "$ sudo apt-get install python-numpy\n",
151 "</pre>\n",
152 "\n",
153 "Frameworks web\n",
154 "\n",
155 "* Django, Pyramid\n",
156 "* Pour quoi? Quel choisir?\n",
157 "* Paquets Debian =\n",
158 "<pre>\n",
25d38a03 159 "$ sudo apt-get install python-django<br />\n",
00e8dd56
DB
160 "$ sudo apt-get install python-pyramid\n",
161 "</pre>\n",
162 "\n",
f5813acc 163 "Pilotes de base de donn\u00e9es\n",
00e8dd56
DB
164 "\n",
165 "* mysqldb, psycopg, sqlalchemy\n",
166 "* Pour quoi? Quel choisir?\n",
167 "* Paquets Debian =\n",
168 "<pre>\n",
25d38a03
DB
169 "$ sudo apt-get install python-mysqldb<br />\n",
170 "$ sudo apt-get install python-psycopg2<br />\n",
00e8dd56
DB
171 "$ sudo apt-get install python-sqlalchemy\n",
172 "</pre>\n",
173 "\n",
f5813acc
DB
174 "## Environnements virtuels Python\n",
175 "\n",
176 "Logiciels install\u00e9s au niveau syst\u00e8me (system-wide) vs install\u00e9s au niveau projet (project-wide)\n",
177 "\n",
178 "* Niveau syst\u00e8me : pour tous les projets, via paquets Debian (pourrait n\u00e9cessiter \"sudo\")\n",
179 "* Niveau projet : propre au projet, via paquets Python dans un environnement virtuel Python, permet utilisation d'une version sp\u00e9cifique\n",
180 "\n",
181 "## Virtualenv\n",
182 "\n",
25d38a03 183 "[http://www.virtualenv.org](http://www.virtualenv.org)\n",
f5813acc
DB
184 "\n",
185 "Cr\u00e9er un environnement virtuel Python\n",
186 "\n",
187 "* qui s'ajoute \u00e0 celui du syst\u00e8me\n",
188 "<pre>\n",
189 "$ virtualenv env\n",
190 "</pre>\n",
191 "\n",
192 "* compl\u00e8tement isol\u00e9 du syst\u00e8me\n",
193 "<pre>\n",
194 "$ virtualenv --no-site-packages env\n",
195 "</pre>\n",
196 "\n",
197 "* instance locale de Python dans l'environnement virtuel\n",
198 "\n",
199 "* supprimer le distribute.tar.gz si ajout\u00e9 par virtualenv, ex.:\n",
200 "<pre>\n",
201 "$ rm distribute-0.6.10.tar.gz\n",
202 "</pre>\n",
203 "\n",
204 "Supprimer un environnement virtuel Python\n",
205 "\n",
206 "* simplement supprimer le r\u00e9pertoire cr\u00e9\u00e9\n",
207 "<pre>\n",
208 "$ rm -r env\n",
209 "</pre>\n",
210 "\n",
211 "Utiliser un environnement virtuel Python\n",
212 "\n",
213 "* activer l'environnement virtuel Python\n",
214 "<pre>\n",
215 "$ source env/bin/activate\n",
216 "</pre>\n",
217 "\n",
218 "* installer, mettre \u00e0 jour ou d\u00e9sintaller des paquets Python avec pip\n",
219 "\n",
220 "* d\u00e9sactiver l'environnement virtuel Python\n",
221 "<pre>\n",
222 "(env)$ deactivate\n",
223 "</pre>\n",
224 "\n",
225 "## pip\n",
226 "\n",
25d38a03 227 "[http://www.pip-installer.org](http://www.pip-installer.org)\n",
f5813acc
DB
228 "\n",
229 "Installer et g\u00e9rer les paquets Python.\n",
230 "\n",
231 "* trouver les paquets \u00e0 installer : pypi<br />\n",
25d38a03 232 "[https://pypi.python.org](https://pypi.python.org)<br />\n",
f5813acc 233 "Exemple :<br />\n",
25d38a03 234 "ipython : [https://pypi.python.org/pypi/ipython/1.0.0](https://pypi.python.org/pypi/ipython/1.0.0)\n",
f5813acc
DB
235 "* cr\u00e9er un fichier requirements.txt dans votre projet\n",
236 "* ajouter un paquet requis par ligne (avec les versions autoris\u00e9es)<br />\n",
25d38a03 237 "[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
238 "Exemple :\n",
239 "<pre>\n",
240 "ipython == 1.0.0\n",
241 "</pre>\n",
242 "\n",
243 "* installer avec pip\n",
244 "<pre>\n",
245 "(env)$ pip install -r requirements.txt\n",
246 "</pre>\n",
247 "\n",
248 "* voir les versions des paquets Python accessibles au projet\n",
249 "<pre>\n",
250 "(env)$ pip freeze\n",
251 "</pre>\n",
252 "\n",
253 "* utiliser les paquets<br />\n",
254 "Exemple :\n",
255 "<pre>\n",
25d38a03 256 "(env)$ ipython<br />\n",
f5813acc
DB
257 "(env)$ ipython notebook\n",
258 "</pre>\n",
259 "\n",
260 "* ajouter autres d\u00e9pendances au besoin et les installer\n",
261 "\n",
262 "* supprimer des d\u00e9pendances\n",
263 "<pre>\n",
264 "(env)$ pip uninstall ipython\n",
265 "</pre>\n",
266 "\n",
267 "\n",
00e8dd56
DB
268 "## Conclusion\n",
269 "\n",
270 "Eh bien...\n",
271 "\n",
272 "* Pas besoin de grand chose\n",
273 "* Tout est l\u00e0 dans Debian\n",
f5813acc 274 "* On contr\u00f4le et comprend son environnement de d\u00e9veloppement avec virtualenv et pip\n",
00e8dd56
DB
275 "* C'est simple et l'fun!\n",
276 "\n",
277 "## En suite?\n",
278 "\n",
f5813acc 279 "Pour aller plus loin :\n",
00e8dd56 280 "\n",
25d38a03 281 "* paquets Debian pour Python : [http://packages.debian.org/stable/python/](http://packages.debian.org/stable/python/)\n",
00e8dd56 282 "\n",
25d38a03 283 "* paquets Python : [https://pypi.python.org](https://pypi.python.org)\n",
00e8dd56 284 "\n",
25d38a03 285 "* virtualenv : [http://www.virtualenv.org](http://www.virtualenv.org)\n",
00e8dd56 286 "\n",
25d38a03 287 "* pip : [http://www.pip-installer.org](http://www.pip-installer.org)\n"
00e8dd56
DB
288 ]
289 },
290 {
291 "cell_type": "code",
292 "collapsed": false,
293 "input": [],
294 "language": "python",
295 "metadata": {},
296 "outputs": []
297 }
298 ],
299 "metadata": {}
300 }
301 ]
302}