Вы находитесь на странице: 1из 41

Anybox est un centre de services Odoo

(ex-OpenERP) et une socit spcialise


dans le dveloppement Python. Ce
document vous aidera dcouvrir ce
langage et ses possibilits.

Python : le dveloppement logiciel


productif et prenne.
Tour d'horizon de la plateforme
Python est un langage et une plateforme
de dveloppement logiciel complte et
gnraliste, trs facile d'accs et
capable de se spcialiser de manire
trs pointue dans la majorit des
domaines informatiques. Python est
utilis par un public trs large : des
dveloppeurs web professionnels, des chercheurs en intelligence artificielle ou
en bio-informatique, des administrateurs systmes, ou mme des
programmeurs occasionnels. C'est le mlange de polyvalence et de facilit qui
fait la force de Python. Avec un bref apprentissage et un minimum d'efforts,
vous serez capable d'envisager n'importe quel type d'application de manire
extrmement efficace et de la terminer (ou de la faire terminer) en temps
voulu.
Le dveloppement de Python ayant commenc la fin des annes 1980, son
dploiement dans l'industrie a commenc vers les annes 2000. Aujourd'hui,
Python est devenu trs populaire auprs des dveloppeurs : beaucoup de
projets viennent peupler un cosystme dj trs riche, et ce dans tous les
domaines. La plateforme bnficie donc d'une visibilit croissante, qui
s'accentuera encore dans les prochaines annes.
quoi ressemble la plateforme Python ?

Un langage dynamique, interactif, interoprable et trs lisible

Un vaste ensemble de bibliothques et frameworks spcialiss

Des outils d'dition, de test et d'industrialisation

Le
support
d'associations

Un march en forte croissance

d'une

communaut

d'entreprises,

d'individus

et

Python : le dveloppement logiciel productif et prenne

Tabledesmatires
1. quoi ressemble Python ?.................................................................3
1.Un langage facile et lisible.........................................................................................
lisible......................................................................................... 3
2.Un mode interactif et un dbogueur intgr..............................................................
intgr.............................................................. 4
3.Multi-plateforme et interoprable..............................................................................
interoprable.............................................................................. 5
4.Ouvert et libre............................................................................................................
libre............................................................................................................ 5
5.Moderne et Multi-paradigme.....................................................................................
Multi-paradigme..................................................................................... 5

2.Que peut-on faire avec Python ?.........................................................6


1.Services fournis en standard......................................................................................
standard...................................................................................... 7
2.Accs aux bases de donnes.......................................................................................
donnes....................................................................................... 9
3.Sites et applications web..........................................................................................
web.......................................................................................... 12
4.Calcul et visualisation scientifique...........................................................................
scientifique........................................................................... 17
5.Scripting d'applications............................................................................................
d'applications............................................................................................ 21
6.Interfaces Graphiques..............................................................................................
Graphiques.............................................................................................. 23
7.Cloud, devops, infrastructure, systmes...................................................................
26
systmes...................................................................26
8.Jeux vidos...............................................................................................................
vidos............................................................................................................... 27
9.Performances et algorithmique................................................................................
algorithmique................................................................................ 28

3.Outils de qualit et d'industrialisation.............................................30


1.Index gnral des paquets Python............................................................................
31
Python............................................................................31
2.Construction d'applications......................................................................................
d'applications...................................................................................... 32
3.Dploiement d'applications......................................................................................
d'applications...................................................................................... 32
4.Tests automatiss et documents.............................................................................
documents............................................................................. 32
5.Qualit du code........................................................................................................
code........................................................................................................ 34
6.Intgration continue.................................................................................................
continue................................................................................................. 35
7.Gnration de documentation..................................................................................
documentation.................................................................................. 36
8.Environnements de dveloppement intgrs............................................................
37
intgrs............................................................37
9.Dpts de code source.............................................................................................
source............................................................................................. 37
10.Forges de dveloppement.......................................................................................
dveloppement....................................................................................... 38

4.Communaut.................................................................................... 39
5.Conclusion........................................................................................ 40
6.Licence et diffusion..........................................................................41

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 2 / 41

Python : le dveloppement logiciel productif et prenne

1. quoi ressemble
Python ?
1. Un langage facile et lisible
Python se caractrise par une syntaxe claire et lisible. Ce principe dcoule
d'une constatation simple : un programme est lu bien plus souvent qu'il n'est
crit. Il faut donc que la comprhension du code la lecture soit la plus
rapide possible. Ceci prend mme une importance considrable en milieu
professionnel o un programme peut changer de mains plusieurs fois et doit
tre maintenu sur le long terme.
Cette lisibilit provient de plusieurs caractristiques :

Un trs faible nombre de caractres exotiques : un programme Python


est dpourvu de la plupart des caractres incomprhensibles que l'on
rencontre traditionnellement dans les langages de programmation. Par
exemple pour affecter le nombre 4 la variable a, on n'crit pas $a:=
4; mais simplement a=4

Une indentation obligatoire : ce sont les espaces en dbut de lignes qui


dlimitent les blocs. Cette particularit, si elle effraye certains
dveloppeurs peu soigneux, se rvle en fin de compte tre un atout
norme : un code Python est toujours indent correctement et se lit
toujours de la mme manire. L'indentation a pour le programmeur la
mme utilit que les accolades pour le compilateur. En limitant la
redondance, Python vite ainsi le risque d'incohrence entre ce qui est
dit au compilateur et ce qui est dit au programmeur.
Pour ces raisons, le Python se rapproche parfois
des pseudo-langages utiliss pour enseigner
l'algorithmique. Il est idal pour apprendre
programmer ou pour crer rapidement un
prototype d'application. l'autre extrmit, cette
lisibilit devient un norme avantage devant la
complexit des trs grands logiciels.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 3 / 41

Python : le dveloppement logiciel productif et prenne

En pratique, un ensemble de conventions et de consignes simples a t


propos pour encadrer l'criture de code Python. Ces rgles sont dfinies
dans un document portant le nom de PEP 8 , qui tend homogniser les
programmes Python et favoriser l'change et la collaboration.

2. Un mode interactif et un dbogueur


intgr
Une autre particularit de Python est la prsence d'un mode interactif : si on
dmarre Python sans lui donner de programme excuter, il donne la main
l'utilisateur, et excute la demande toute commande Python valide. Ceci est
un atout pour la rapidit de dveloppement, notamment lors d'un
prototypage. De plus, dans ce mode il est possible de consulter l'aide des
classes et des fonctions. Il est ainsi facile de faire des essais en mode
interactif, puis de les recopier dans le corps du programme. Dans ce mode,
Python peut aussi tre utilis comme une calculatrice programmable.
Dans l'illustration ci-dessous, l'interprte Python standard est celui du milieu.
Les deux autres, ipython
et bpython sont des
variantes
offrant
des
fonctionnalits
additionnelles, comme la
coloration, la compltion,
les suggestions pendant
la frappe, etc.
Nativement, le langage
offre
galement
un
dbogueur.
N'importe
quel programme peut
ainsi tre interrompu et
excut instruction par
instruction grce la
pose de points d'arrts
ou l'affichage de la pile
d'appel. L'analyse et la correction de problmes sont ainsi grandement
facilites : le dbogueur prend l'apparence d'une console Python donnant
accs l'environnement d'excution de l'application.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 4 / 41

Python : le dveloppement logiciel productif et prenne

3. Multi-plateforme et interoprable
Python
fonctionne
sur
toutes les plateformes les
plus courantes, Windows,
Linux et Mac Os, ainsi que
sur de nombreux autres
systmes, y compris des
plateformes mobiles telles que Maemo ou Android.
Python fonctionne galement sur la machine virtuelle Java de Sun ou sur la
plateforme .NET de Microsoft, donnant ainsi un accs direct toutes les API
Java ou .NET. Les versions correspondantes s'appellent Jython et IronPython.
Enfin, le module ctypes permet d'utiliser nativement n'importe quelle
bibliothque crites en C. Python est dans ce cas idal comme langage de
glue.

4. Ouvert et libre
Les diffrentes versions de Python sont toutes publies sous une licence libre
permissive, autorisant l'criture de logiciels libres ou propritaires. Python
peut tre librement modifi, redistribu et mme intgr l'intrieur d'un
autre logiciel pour lui offrir des capacits de scripting.

5. Moderne et Multi-paradigme
Au-del d'une syntaxe trs lisible, Python possde un typage fort mais
dynamique, une compilation automatique en bytecode, un garbage collector,
une gestion des exceptions, de l'Unicode, de la programmation multithread et
multiprocess ainsi que d'autres caractristiques qui en font un langage
moderne et de plus en plus utilis.
Python est un langage multiparadigme : il est possible de programmer en
mode impratif, sans tre un expert de la programmation objet. Si, en
revanche, on programme avec des objets, on peut plonger sans difficult
dans tous les motifs de conception (Design Patterns), y compris en utilisant
des interfaces ou des classes abstraites. La programmation fonctionnelle,
enfin, peut tre aborde grce l'importance accorde aux listes, aux
itrateurs, aux gnrateurs ou grce la prsence des fonctions map, reduce,
filter et des fonctions anonymes lambda.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 5 / 41

Python : le dveloppement logiciel productif et prenne

2. Que peut-on faire avec


Python ?
Python est connu pour tre fourni avec les
piles . Cela signifie que sans aucun module
additionnel, il est dj possible de dvelopper
des applications pour de trs nombreux
domaines. La polyvalence est au cur de la
plateforme elle-mme et constitue une de ses
plus grandes forces : un dveloppeur ayant
appris le langage Python au travers d'un
domaine (par exemple le dveloppement de modules Odoo), sera capable
d'aborder un autre domaine tel que les interfaces graphiques en un temps
record, sans apprendre de nouveau langage. Le seul apprentissage
ncessaire concerne certaines techniques supplmentaires, par exemple la
programmation vnementielle. Cet apprentissage sera fortement acclr
par l'absence de nouvelle difficult syntaxique assimiler. On pourrait
nommer ceci la rutilisation des comptences . Ces considrations sont
une des causes de ce que l'on appelle le Paradoxe Python : les
dveloppeurs Python ont sembl une poque difficiles recruter, mais
former un dveloppeur Python est un investissement lger et rentable, car
gnrateur de polyvalence, de motivation et d'efficacit. Un bon dveloppeur
Java ou PHP n'aura pas de mal apprendre le langage en quelques heures et
sera rapidement plus productif.
2.Que peut-on faire avec Python ?.......................................................10
1.Services fournis en standard....................................................................................
standard.................................................................................... 11
2.Accs aux bases de donnes....................................................................................
donnes.................................................................................... 13
3.Sites et applications web.........................................................................................
web......................................................................................... 16
4.Calcul et visualisation scientifique...........................................................................
scientifique........................................................................... 21
5.Scripting d'applications...........................................................................................
d'applications........................................................................................... 24
6.Interfaces Graphiques..............................................................................................
Graphiques.............................................................................................. 26
7.Scripts/administration Systme...............................................................................
Systme............................................................................... 29
8.Jeux vidos...............................................................................................................
vidos............................................................................................................... 30
9.Performances et algorithmique................................................................................
algorithmique................................................................................ 31

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 6 / 41

Python : le dveloppement logiciel productif et prenne

1. Services fournis en standard


Un langage de haut niveau comme Python se caractrise par le fait qu'il vite
de rinventer ce qui existe dj. Tout est dj prvu pour que vous puissiez
profiter de manire simple de protocoles courant, comme HTTP, FTP, IMAP
ou POP, de techniques de programmation avances comme le multithreading
ou le multiprocessing, ou bien de chiffrement, compression ou stockage des
donnes.
Voici un aperu des possibilits fournies en standard avec Python.
Tous les types et services de base sont directement intgrs, comme les
chanes de caractres unicode, les types numriques, la gestion des erreurs
(exceptions), la gestion des fichiers et des entres/sorties, le formatage des
chanes et des dates. Des structures de haut niveau sont galement
prsentes, comme les listes, les ensembles, les tableaux ou les dictionnaires.
Ces structures sont fortement optimises et leur implmentation est crite en
C. Elles apportent un haut niveau d'homognit et de souplesse dans la
gestion des donnes.
De nombreux modules spcialiss sont prsents par dfaut, en voici quelques
exemples :
re

expressions rationnelles

difflib

calculs de delta de diffrences

datetime

oprations sur les dates et heures

calendar

oprations sur des calendriers

math

oprations mathmatiques

random

oprations alatoires

zlib

oprations de compression

csv

lecture/criture de fichiers .CSV

ConfigParser

lecture/criture de fichiers .INI

sqlite3

accs des bases de donnes SQLite

md5, sha

oprations de hachage

shutil

oprations de haut niveau sur les fichiers

io

oprations de bas niveau sur des flux de donnes

threading

programmation multithread

subprocess

cration de sous-processus

multiprocessing

programmation multiprocessus

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 7 / 41

Python : le dveloppement logiciel productif et prenne

Quelques exemples de modules standards pour la programmation rseau et


internet :
ssl

connexion rseau scurise

email

oprations sur des courriels

json

encodeur et dcodeur JSON

webbrowser

gestion des navigateurs internet

cgi

outils pour la programmation web en CGI

httplib

programmation HTTP

ftplib

programmation FTP

poplib

rception d'e-mail par POP

imaplib

gestion d'e-mail par IMAP

smtplib

envoi d'e-mail (SMTP)

BaseHTTPServer un serveur web basique


gestion des cookies
Cookie
xmlrpclib

connexion des services web XML-RPC

Exemples de modules pour le multimedia, fournis aussi en standard :


wave

manipulation de fichiers audio WAV

colorsys

conversion de couleurs RGB, HSV, YIQ

imghdr

dtection des types d'images

sndhdr

dtection des types de fichiers audio

Exemples de modules utiles au dveloppement, dbogage, profilage,


galement fournis en standard :
pydoc

gnrateur automatique de documentation

doctest

criture de la documentation testable

unittest

criture des tests unitaires

pdb

le dbogueur Python

profile

le profileur Python

gc

accs au Garbage Collector

inspect

outils d'introspection des objets Python

D'autres modules sont spcifiques aux plateformes UNIX, Windows ou Mac


Os. Les modules ci-dessus ne sont que quelques exemples, vous pouvez vous
rfrez la documentation officielle pour avoir une vision plus complte des
possibilits de la bibliothque standard.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 8 / 41

Python : le dveloppement logiciel productif et prenne

2. Accs aux bases de donnes


La plateforme Python permet d'accder de manire trs simple la majorit
des bases de donnes actuelles, y compris des bases de donnes
mergentes suivant la tendance actuelle du NoSQL . En dehors des pilotes
bas niveau, on trouve galement un ensemble de surcouches facilitant la
programmation et amliorant fortement la scurit (par exemple des
protections contre les injections SQL).

Bases de donnes relationnelles


Il s'agit des bases de donnes classiques que l'on
peut interroger avec le langage SQL. La majorit de
ces bases de donnes, aussi bien libres que
propritaires, possdent un pilote Python et ces
pilotes suivent une spcification commune : la DBAPI. La faon d'ouvrir un accs une base et de
lancer une requte est donc la mme quelle que soit
la base de donnes. Nul besoin d'apprendre
utiliser chaque pilote indpendamment. Ceci facilite
galement la migration d'une base vers une autre.
Parmi les bases de donnes ou les API prises en
charge on trouve (liste non exhaustive) :

PostgreSQL

MySQL

Oracle

SQLite

Ingres

Informix

Sybase

Microsoft ADO

IBM DB2

ODBC

Berkeley DB

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 9 / 41

Python : le dveloppement logiciel productif et prenne

Bases de donnes objet


Des bases de donnes objets sont galement en production depuis plus de
dix ans et simplifient la persistance des donnes dans le cadre d'un langage
orient objet comme Python. L'une d'entre elles, la ZODB, provient du
framework web Zope, mais peut tre utilise de manire compltement
indpendante pour permettre la persistance d'objets Python dans n'importe
quelle application. L'utilisation de la ZODB rend la persistance compltement
transparente dans une application : les objets sont stocks tels quels sous
forme d'un graphe hirarchique et chacun peut tre utilis directement
comme un objet dj en mmoire, sans avoir effectuer la moindre requte.
Une ZODB est capable de grer des millions d'objets de manire fiable,
transactionnelle, et historise. Elle rpond aux quatre proprits ACID :
Atomicit, Cohrence, Isolation et Durabilit.

Bases de donnes NoSQL


Il s'agit souvent de bases de donnes trs grands
volumes de stockage, souvent distribues. Un bon
exemple de base de ce type est CouchDB, une base de
donnes supporte par la fondation Apache, crite en
Erlang avec un systme de vues en Javascript. Le
principe de CouchDB est de stocker uniquement des
documents non structurs, possdant chacun un
ensemble non fig de proprits.
Les documents sont stocks plat, de manire non
hirarchique. L'quivalent des requtes SQL se fait
grce l'utilisation de vues pr-calcules pour
l'ensemble des documents. Le dialogue avec CouchDB
peut se faire avec n'importe quel langage, via HTTP et
un change de donnes en JSON. Plusieurs
bibliothques en Python, comme CouchDBKit, facilitent
le dialogue, la cration de bases, l'insertion ou la
modification des vues.
MongoDB est un autre exemple de base oriente document , et possdant
un pilote Python.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 10 / 41

Python : le dveloppement logiciel productif et prenne

La tendance NoSQL suit divers chemins : en dehors des bases orientes


document comme CouchDB et MongoDB, on trouve des bases orientes
cl/valeur comme Redis ou MemcacheDb, ou orientes colonnes ,
comme Cassandra qui a t libre par Facebook en 2008. Toutes les bases
de ce type possdent un pilote ou une bibliothque Python : celle de
Cassandra se nomme Lazyboy et simplifie l'accs aux donnes en s'intgrant
aux structures de donnes haut niveau de Python. Celle de Redis se nomme
simplement redis , etc.

Surcouches pour l'accs aux bases


Python tant un langage objet, il est souvent
plus agrable d'accder aux bases de donnes
en utilisant des objets. Au del de la
spcification DB-API offrant une interface
unifie, on trouve diffrents niveaux de
surcouches aux bases de donnes : des
bibliothques comme SQLAlchemy proposent
la construction de requtes SQL par de
simples appels de mthode de type insert,
filter ou join sur des objets, sans avoir crire
une seule ligne de SQL. Cela prsente de nombreux avantages en terme de
fiabilit, de scurit et de possibilit de changement de base de donnes : le
langage d'accs est unifi entre toutes les bases.
un niveau encore suprieur, on trouve les ORM (Object Relational
Mappers). SQLAlchemy contient aussi un excellent ORM, probablement le
plus utilis en Python. L'ORM permet de travailler directement sur les objets
mtiers sans se soucier de la base de donnes : lors d'une lecture dans la
base, les objets Python sont automatiquement reconstruits par agrgation ou
jointure de tables. Inversement, lorsqu'on modifie les attributs d'un objet,
l'ORM sait dans quelles tables crire. Cette connaissance de l'ORM provient
de l'criture des schmas de donnes mtiers effectue lors de la phase de
conception : la gestion de la base de donnes n'a plus besoin d'tre prise en
charge par le dveloppeur, hormis pour des questions d'optimisation.
Heureusement pour ce dernier point, il est possible de connatre toutes les
requtes gnres et d'agir mme au plus bas niveau.
D'autres ORM existent, comme Storm, cr par Canonical, la socit qui
dveloppe le systme d'exploitation Ubuntu Linux.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 11 / 41

Python : le dveloppement logiciel productif et prenne

3. Sites et applications web


Python est utilis depuis plus d'une dcennie pour des dveloppements web
professionnels. Certains sites web actuels trs fort traffic comme YouTube
ou Reddit ont t initialement crits en Python. Les offres d'hbergement
mutualis classiques trs faible cot proposent assez rarement ce langage
car il ncessite l'utilisation d'un serveur ddi ou priv virtuel. Cependant,
l'avnement des serveurs ddis low-cost et du Cloud Computing
s'accompagne de possibilits d'hberger des applications web en Python pour
un cot modique. L'offre de Cloud Computing de Google, nomm App Engine
a d'abord t disponible exclusivement pour Python (Google est un grand
utilisateur de ce langage).
Des applications web professionnelles de type CMS (Gestion de contenu,
intranets, extranets), ERP (Gestion d'entreprise) profitent galement de la
souplesse du langage et de la facilit avec laquelle on peut crire des
programmes gnriques et extensibles.
Pour la gestion de contenu, les
portails ou sites collaboratifs, les
intranets ou extranets, l'outil phare
est Plone. Ce CMS trs mature est
utilis depuis prs de quinze ans, il
est compltement industrialis,
support
par une importante
communaut
internationale
et
possde un trs grand nombre de modules d'extension.
Pour la gestion d'entreprise, on trouve deux PGI Open Source (Progiciels de
Gestion Intgrs) :
Odoo connat une croissance fulgurante.
Il fonctionne entirement en mode web et
possde un nombre impressionnant de
modules mtiers. C'est la fois un ERP
open-source trs puissant, mais aussi une
plateforme web permettant de construire
trs rapidement un site web, une boutique
e-commerce en ligne, un blog ou d'autres applications web directement
intgres avec l'ERP. En outre, il se base sur un framework de
dveloppement rapide OpenObject avec lequel il est possible de dvelopper
n'importe quelle application d'entreprise en un temps record.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 12 / 41

Python : le dveloppement logiciel productif et prenne

Un autre PGI majeur est ERP5. Bas sur les technologies


Zope, celui-ci s'offre le luxe de concurrencer les meilleures
solutions d'ERP propritaires, et son caractre gnrique lui
permet de s'adapter n'importe quelle entreprise ou
organisation de n'importe quel pays. Il constitue galement la
base du service Tiolive d'externalisation totale de
l'infrastructure informatique d'une entreprise.
titre d'exemple nous citerons quelques outils
courants dans le milieu du web qui sont crits en
Python : Mailman est un gestionnaire de listes de
diffusion trs robuste et extrmement utilis dans la
communaut du logiciel libre. Moinmoin est un
moteur de wiki galement trs courant. Enfin, plus orient
rseau que web, l'implmentation historique du
serveur et du client Bittorent sont en Python.
Du fait de l'ouverture du protocole, de
nombreuses autres versions en diffrents
langages existent, mais il faut noter que ces
premires versions sont celles qui l'ont men son succs
originel.

Frameworks de dveloppement web


L'intrt d'un framework (ou cadriciel en franais) est d'offrir de manire
cohrente toutes les briques de base pour crer une application. Ainsi, les
frameworks se chargent de vous offrir toutes les facilits indispensables :
accs aux bases de donnes, gnration de page HTML, gnration de
formulaires, sessions, cache, authentification, etc.
Le monde du dveloppement web en Python est extrmement riche. Il est
possible d'attaquer tous les niveaux de complexit, depuis la simple page
personnelle jusqu' un gros ERP ou un intranet. Cette richesse est
heureusement contrle par une spcification qui rend les composants web
et les frameworks interoprables. (La spcification WSGI, Web Server
Gateway Interface).
La partie merge de cet norme iceberg laisse apparatre trois frameworks
majeurs : Zope, Django et Odoo. La partie immerge, tout autant digne
d'intrt, est aborde plus bas.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 13 / 41

Python : le dveloppement logiciel productif et prenne

Zope est un cosystme trs vaste et trs


riche, certainement le plus ancien. Le
principe fondateur de Zope est la publication
d'objets sur le web : ds la fin des annes 90,
ce framework tait entirement orient objet,
y compris sa base de donnes (ZODB). Zope
est toujours trs utilis et a donn naissance
tout un cosystme, compos de frameworks, micro-frameworks modernes,
bibliothques, outils et applications comme Plone. Zope est le framework
idal pour crer des application de gestion de contenu ou gestion
documentaire.
Django est un framework web gnraliste de
type MVC, trs similaire Ruby on Rails ou
Symfony. Sa documentation est complte et sa
prise en main rapide. La communaut franaise
est trs active et anime le site web django-fr.org.
Django est idal pour crer rapidement des sites
ou
applications
web
avec
de
bonnes
performances. Il peut s'interfacer avec diffrents types de bases de donnes
et prend nativement en charge MySQL, PostgreSQL, SQLite et Oracle. De
trs nombreux modules pour Django existent (qu'on appelle des
applications Django ) et peuvent se greffer pour offrir des fonctionnalits
additionnelles. Outre son excellente documentation, un des intrts
historiques de Django est d'offrir une interface d'administration, cre
automatiquement, pour votre application.
Odoo, si l'on fait abstraction de tous ses
modules
applicatifs,
est
aussi
un
framework de dveloppement rapide. Il se
base exclusivement sur la base de donnes
PostgreSQL, gage de performance et de
fiabilit. Outre sa modularit, son plus
grand atout est d'tre un framework
beaucoup plus cadr que les deux prcdents, faisant de lui le framework
idal pour le dveloppement d'outils de gestion d'entreprise : l'interface
graphique, la base de donnes, les workflows mtiers tant dfinis de
manire quasi-descriptive, on arrive trs rapidement obtenir un rsultat
attrayant et ergonomique, et on peut passer ainsi plus de temps sur les
besoins mtiers.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 14 / 41

Python : le dveloppement logiciel productif et prenne

Les succs de Zope, Django et Odoo


proviennent du fait qu'ils offrent, l'instar de
Python, un maximum de possibilits de
manire native. Ces deux produits ne doivent
pas occulter l'extraordinaire richesse d'autres
frameworks comme Pyramid, CubicWeb,
web2py, CherryPy, Werkzeug, Flask, Anyblok, etc. Vous pouvez obtenir
une
liste
plus
complte
sur
la
page
http://wiki.python.org/moin/WebFrameworks

Micro-frameworks et assemblage de composants


web
Plutt que d'utiliser des frameworks tout-en-un comme Zope, Django, ou
Odoo, une alternative intressante est de crer des applications par
assemblage de composants gnriques. Le principe est de partir d'une base
minimale (comme Pyramid ou Flask), puis d'ajouter des briques. Cet
assemblage peut se faire de diffrentes faons :

par ajout et utilisation de bibliothques additionnelles,

grce WSGI, un standard Python permettant de brancher des


middlewares

grce la Component Architecture de Zope, utilisable avec n'importe


quel projet Python

avec d'autres techniques de composants existantes (voir CubicWeb)

Voici quelques exemples de fonctionnalits pouvant tre prises en charge par


des composants spars et rutilisables :
Accs aux bases de donnes

SQLAlchemy est une bibliothque


d'abstraction permettant d'accder
n'importe quelle base de donnes
relationnelle de manire identique et en
programmation objet. SQLAlchemy peut dialoguer avec SQLite, PostgreSQL,
MySQL, Oracle, MS-SQL, Firebird, MaxDB, MS Access, Sybase, Informix, et
DB2. D'autres outils du mme genre existent : Storm, SQLObject. Nous
vous invitons consulter la section Bases de donnes en page 9.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 15 / 41

Python : le dveloppement logiciel productif et prenne

Gnration de formulaires

Le principe est de dcrire les donnes grce un schma puis de laisser les
formulaires se gnrer automatiquement en fonction du schma. Il existe
souvent un lien entre formulaires, schmas et bases de donnes. Pour cette
raison, les bibliothques de gnration de formulaires sont souvent lies
une autre technologie, soit le framework lui-mme, soit la base de donnes
ou une abstraction sur la base de donnes. Voici quelques exemples de
bibliothques matures utilisables en production : z3c.form (Zope),
FormAlchemy (SQLAlchemy), tw.forms (TurboGears), gnue-forms (GNUe).
Authentification / autorisation

Il est possible de prendre en charge la notion


d'authentification et d'autorisation de manire
gnrique, hors de tout framework, juste par
ajout d'un middleware WSGI sur une application
existante. Les composants repoze.who et
repoze.what sont conus dans cette optique et
couvrent les deux types de besoin. Ils fonctionnent grce des plugins et
sont capables de grer n'importe quelle source d'utilisateurs, de groupes, de
permissions, et n'importe quelle mthode d'authentification et d'autorisation.
Templating

La cration dynamique des pages HTML est prise en charge par ce qu'on
appelle un outil de templating. Le principe est d'insrer du contenu en
plaant dans les pages HTML soit des balises spcifiques, soit des attributs
XML. Tous les frameworks de dveloppement web proposent un ou plusieurs
outils de ce genre (dont les noms sont ZPT, Mako, Genshi, Chameleon, et
d'autres).
Gestion du cache et des sessions

Beaker est une bibliothque permettant de grer du cache ou des sessions


avec abstraction du stockage. De nombreuses mthodes de stockage sont
disponibles, persistantes ou non : memcached, dbm, sql, mmoire vive, etc.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 16 / 41

Python : le dveloppement logiciel productif et prenne

4. Calcul et visualisation scientifique


Le domaine scientifique est un des plus gros
points
forts
de Python. Sa facilit
d'apprentissage permet des scientifiques,
chercheurs, mathmaticiens d'tre efficaces
rapidement lors de prototypages, de calculs
lourds ou distribus, de visualisation,
d'apprentissage automatique.
Python remplace progressivement les outils
ou frameworks scientifiques propritaires et
son modle Open Source est un avantage
dans le milieu scientifique o le partage de
connaissance et d'innovation est une
pratique naturelle.

NumPy
NumPy est l'outil de base pour faire du
calcul scientifique en Python. Il offre
notamment des capacits de calcul sur
des matrices N dimensions, des
capacits d'intgration avec C/C++ et
Fortran, de l'algbre linaire, des
transformes de Fourier et des outils de
calcul alatoire. NumPy permet de
travailler sur des trs gros jeux de
donnes en minimisant la consommation
mmoire (calcul sur des sous-matrices,
sans duplication). Les algorithmes de calcul sont implments en C et
fortement optimiss.

SciPy
SciPy est construit au dessus de NumPy et offre un vaste
ensemble d'outils et d'algorithmes pour les mathmatiques,
le calcul scientifique et l'ingnierie : calculs matriciels,
polynomiaux, algbre linaire, traitement du signal,
statistiques, algorithmes gntiques, machine learning, etc.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 17 / 41

Python : le dveloppement logiciel productif et prenne

Matplotlib
Matplotlib
est
une
bibliothque de
trac
et
visualisation produisant des graphiques de qualit
professionnelle. Les graphiques peuvent tre
produits dans diffrents formats de sortie, y
compris des formats interactifs permettant une
interaction la souris, intgrables dans une
interface graphique. Matplotlib peut tre utilis
soit depuis un programme en Python, soit depuis
un terminal de commande interactif. De trs
nombreux types de graphiques peuvent tre
gnrs. Par dfaut il s'agit de graphiques en 2D et des extensions
permettent de produire des cartographies, graphiques en 3D ou des grilles
de donnes.

Scikit Learn
Construit partir des trois outils prcdents,
Scikit Learn est un ensemble de bibliothques et
d'algorithmes
ddis

l'apprentissage
automatique, au data mining et l'analyse de
donnes, c'est dire aux problmes de
classification, rgression, clustering, rduction
dimensionnelle, slection de modle, extraction de caractristiques et
normalisation.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 18 / 41

Python : le dveloppement logiciel productif et prenne

MAYAVI
Outil de visualisation interactive de donnes scientifiques,
prvu pour tre intgr avec les diffrentes bibliothques
scientifiques Python (notamment Scipy).

Sage
L'objectif
de
Sage
est
l'tude
des
mathmatiques, lmentaires ou avances,
fondamentales ou appliques. Cela comprend
notamment l'algbre basique, le calcul
infinitsimal, la thorie des nombres, la
cryptographie, le calcul numrique, l'algbre commutative, la thorie des
groupes, la combinatoire, la thorie des graphes, l'algbre linaire exacte et
beaucoup d'autres domaines. Sage est ddi l'enseignement et la
recherche. Son principe est de
rassembler plus d'une centaine
de programmes Open Source
dans une interface unifie, soit
une ligne de commande Python,
soit un notebook accessible
depuis un simple navigateur
web.

Biopython
C'est un framework orient biologie. Il
contient plusieurs modules spcialiss, pour
travailler avec les squences ADN, les
protines qu'elles codent et interagir avec les
principales bases de donnes biologiques en
ligne.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 19 / 41

Python : le dveloppement logiciel productif et prenne

PyMol
PyMol est un systme de visualisation molculaire, un
outil de rendu et un diteur molculaire en 3D, ddi la
visualisation de structures
chimiques, y compris les
structures
cristallines

rsolution atomique. PyMol


peut
tre
utilis
pour
visualiser des protines, des acides nucliques
(ADN, ARN) des glucides, ou n'importe quelle
structure molculaire ou atomique pour la
recherche pharmacologique, biotechnologique,
dans l'industrie, la recherche acadmique ou
l'enseignement. PyMol permet de gnrer des
images statiques ou des animations et peut
exporter les donnes vers d'autres formats 3D.

Autres projets
De trs nombreux autres projets existent, en voici quelques uns :
MMTK : Le Molecular Modelling Toolkit, permet la modlisation et la
manipulation de molcules, grce des algorithmes de simulations
permettant
d'implmenter
facilement
des
simulations
complexes
(trajectoires, codage de protines tape par tape...).
SymPy : un outil pour les mathmatiques symboliques.
Une liste plus complte en anglais se trouve l'adresse suivante :
http://wiki.python.org/moin/NumericAndScientific

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 20 / 41

Python : le dveloppement logiciel productif et prenne

5. Scripting d'applications
La lgret de Python et ses capacits d'interoprabilit lui permettent d'tre
embarqu directement dans de nombreux logiciels afin d'tre utilis comme
langage de script ou de macro. Quand il n'est pas embarqu, Python est
souvent propos comme mthode de scripting et de pilotage pour des
applications de bureautique ou de graphisme.
En voici quelques exemples.

LibreOffice
La clbre suite bureautique libre peut tre
pilote entirement en Python. Il est donc
possible d'crire des macros en Python pour
raliser
toutes
sortes
de
tches
automatise, de gnrer ou remplir des
documents depuis une base de donnes,
gnrer des factures, etc.

Autodesk Maya
Maya est un modeleur 3d propritaire rput, dvelopp par Autodesk.
Depuis la version 8.5, Maya offre nativement une interface Python aux
commandes Maya et l'API interne.

Blender
Blender est un logiciel de
modelage et d'animation
3D libre et trs puissant, entirement
scriptable en Python, ce qui permet
d'automatiser des traitements, des
crations d'objets ou d'animations
complexes.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 21 / 41

Python : le dveloppement logiciel productif et prenne

Inkscape
Inkscape est un illustrateur vectoriel libre, il est aussi
interfaable avec Python, de l'intrieur ou de l'extrieur
(appel d'un script depuis Inkscape ou communication avec
Inkscape depuis un script).

Gimp
Gimp est un logiciel libre de retouche d'images
possdant de nombreuses fonctions avances. Il inclut de
base un interprte Python, permettant de le scripter et
de raliser des filtres trs puissants.

Autres logiciels pilotables


De trs nombreux autres logiciels sont pilotables nativement en Python. Pour
les autres, sous Windows, sous Mac et sous Linux, des API ou des bus
d'vnements de type COM, D-Bus, AppleScript, sont galement
programmables en Python pour piloter des applications, des parties du
systme ou ragir des vnements.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 22 / 41

Python : le dveloppement logiciel productif et prenne

6. Interfaces Graphiques
Python est fourni par dfaut avec un module TkInter permettant de crer
des interfaces graphiques simples. Pour les besoins plus avancs, il peut
s'interfacer avec plusieurs bibliothques graphiques prsentes plus bas. Le
code cr peut en outre fonctionner de la mme manire sur Windows, Linux,
MacOsX ou n'importe quel autre systme sur lequel la bibliothque utilise
est disponible ! Visuellement il est impossible de diffrencier une application
crite en Python et la mme application crite par exemple en C ou C++ : si
la bibliothque graphique est la mme, le rendu est identique. Le code
source, par contre, sera beaucoup plus facile comprendre et maintenir.
L'utilisation de Python avec ces bibliothques rduit les temps de
dveloppement de manire spectaculaire, sans pnaliser la ractivit des
logiciels.

Bibliothques disponibles en Python


Une bibliothque graphique est le composant qui offre l'ensemble des
widgets composant une interface graphique (boutons, checkbox, menus,
ascenseurs, etc.). Plusieurs bibliothques existent pour crer des interfaces
graphiques multiplateformes, et toutes peuvent tre utilises avec Python.
Les plus connues sont GTK+, Qt et WxWidgets.
GTK+ utilise automatiquement le thme natif de Windows et
passe donc inaperu sur ce systme. Il est utilis par dfaut
dans beaucoup de systmes d'exploitations comme Ubuntu,
Redhat ou Solaris, car l'environnement Gnome se base
entirement sur lui. De trs nombreux logiciels l'utilisent, aussi bien libres,
comme GIMP (retouche photo), Inkscape (illustrateur vectoriel) ou Maemo
(plateforme embarque), que propritaires, comme VMware (virtualisation).
L'accs en Python se fait grce PyGtk, disponible sous Windows, Linux et
MacOsX.
Qt est une bibliothque dveloppe aujourd'hui par Nokia et
aussi trs employe, aussi bien par des logiciels libres que des
logiciels propritaires. Elle est utilise galement par de
nombreux systmes d'exploitation comme Mandriva ou Pardus,
car l'environnement KDE se base dessus. L'accs en Python se fait grce
PyQt, disponible sous Windows, Linux et MacOsX.
Le principal intrt de WxWidgets est qu'il utilise la
bibliothque graphique du systme cible, rendant
l'intgration 100% transparente. L'accs en Python se
fait grce WxPython, disponible sous Windows, Linux et MacOsX.
Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 23 / 41

Python : le dveloppement logiciel productif et prenne

D'autres bibliothques similaires existent, comme Tk, dont l'interface est


mme fournie par dfaut avec Python.

Cration rapide d'interfaces graphiques


Pour crer rapidement des interfaces graphiques complexes, il existe des
outils interactifs et trs simples utiliser. En voici quelques uns, dont
certains sont crits en Python. Leur fonctionnement est similaire : vous crez
visuellement l'interface graphique, puis l'outil enregistre le description de
cette interface dans un fichier XML. Ce fichier XML peut ensuite tre utilis
grce une unique instruction dans le programme final en Python. Avec
WxWidgets, tant donn que le code fait plus d'une ligne, il est gnr
automatiquement par l'outil wxGlade.

Le logiciel Glade permet de crer visuellement une interface graphique en GTK+.

Le logiciel Qt Designer permet de crer visuellement une interface graphique en Qt.

Le logiciel WxGlade permet de crer visuellement une interface graphique en WxWidgets.

Une alternative Glade


Il existe un programme quivalent Glade, appel Gazpacho et entirement crit en
Python. Son interface est lgrement diffrente, mais il offre globalement les mmes
fonctionnalits,
plus l'accs
un3.0
ensemble
supplmentaire de widgetsPage
(Kiwi).
Version
1.2 Publiavec
sousen
licence
CC-BY-SA
par Anybox
24 / 41

Python : le dveloppement logiciel productif et prenne

Autres types d'interfaces graphiques


D'autres technologies matures ou innovantes existent. En voici quelques
exemples :
Kivy est un framework de dveloppement rapide
d'applications
faisant
usage
d'interfaces
innovantes comme les interfaces tactiles
multipoints, et fonctionne sous Linux, MacOsX,
Windows, Android et iOS.

Jython est une version de Python fonctionnant sur la plateforme Java. Il


permet d'accder en Python toutes les bibliothques Java et donc de crer
des interfaces graphiques avec AWT ou Swing.
IronPython est une version de Python fonctionnant sur la plateforme .NET.
Il permet d'accder toutes les bibliothques .NET et donc de crer des
interfaces graphiques avec WPF, MFC ou directement win32.
Pyjamas provient des technologies web. Il s'agit d'un compilateur Python
vers Javascript, d'un framework AJAX et d'un ensemble de widgets pour crer
une application fonctionnant indiffremment sur le web ou en mode desktop.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 25 / 41

Python : le dveloppement logiciel productif et prenne

7. Cloud, devops, infrastructure, systmes


De par sa nature dynamique et multi-plateforme, et aid
par sa syntaxe simple et claire, Python se rvle tre un
trs bon langage pour des besoins d'infrastructure
allant d'un petit script systme une infrastructure
Cloud gante. Ainsi on le retrouve de faon de plus en
plus frquente dans de nombreux outils d'installation,
de configuration, de maintenance, de surveillance, de
dploiement ou d'hbergement.
La gestion des exceptions, avec les
erreurs possibles clairement identifies
dans les modules systmes, permet ainsi
de grer finement et clairement les
diffrents tats dans lesquels une opration peut se terminer.
L'intgration l'environnement, la gestion simple des variables
systmes, des arborescences, des journaux d'excutions, des
expressions rationnelles puissantes permettent entre autres
d'crire des scripts systmes efficaces, lisibles et maintenables.

OpenStack
Openstack est un monumental ensemble de logiciels
consacrs la cration de clouds privs et publics. Il est
devenu en quelques annes la rfrence open-source
internationale en matire de Cloud tel point que des
entreprises comme HP ont investi en 2014 un milliard
de dollars dans cette solution, et qu'il est utilis par
exemple en France comme infrastructure pour offrir des
services de Cloud souverain. OpenStack est crit
majoritairement en Python.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 26 / 41

Python : le dveloppement logiciel productif et prenne

Salt, Ansible
Salt et Ansible reprsentent la nouvelle tendance en
matire d'automatisation d'infrastructure et de cloud. Ils
facilitent
l'automatisation,
le
provisionning,
l'orchestration et la gestion de configuration de parcs
d'applications, de machines
physiques,
de
serveurs
virtuels ou de Clouds en tous genres.

8. Jeux vidos
Le domaine des jeux vidos n'est
pas non plus ignor :
Dans le jeu en ligne massivement
multijoueurs
EVE
online,
Stackless Python a t utilis
pour implmenter le serveur de
jeu, un systme demandant une
approche
hautement
concurrentielle
de
la
programmation et de grandes
performances. La souplesse de
Python permet ici de crer un
design
applicatif
extensible,
adapt un besoin en volution
constante, tout en restant facile
modifier et amliorer dans des dlais brefs. Dans le jeu Civilisation IV, un
jeu de stratgie rinventant l'histoire des civilisations humaines sur plusieurs
milliers d'annes, Python est utilis pour accder de nombreux composants
du jeux, et scripter un certain nombre de fonctionnements.
Il existe galement des moteurs 3D comme les moteurs Panda3D, ou
Soya3d, dont les curs sont respectivement en C++ et Python/Pyrex et avec
lesquels on peut crire des jeux entirement en Python et avec de bonnes
performances.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 27 / 41

Python : le dveloppement logiciel productif et prenne

9. Performances et algorithmique
Apprentissage
La simplicit d'utilisation de Python en fait un langage intressant pour
apprendre l'algorithmique sans tre perturb par des considrations telles
que la compilation, la gestion des pointeurs et de la mmoire ou la matrise
d'outils lis au langage. Juste aprs installation, on peut immdiatement
lancer un interprte et effectuer quelques tests en ligne de commande. ce
stade, mme un diteur de code est inutile.

Maquettage
Raliser un algorithme intensif final en pur Python n'est pas une bonne ide,
mais faire une maquette de cet algorithme en Python en est une excellente.
Cela permet de confirmer ou infirmer une hypothse trs rapidement et
d'viter d'allouer trop de temps ou de ressource quelque chose qui pourra
ventuellement tre abandonn.
Une fois la maquette ralise, il suffit de rcrire uniquement les parties qui
doivent tre accelres dans un langage compil puis de les placer dans un
module Python, ou bien d'utiliser une des techniques ci-dessous qui ont
l'avantage de rester en Python.

Optimisation
Python
tant
un
langage
interprt, il profite pleinement
du fait que le temps d'excution
d'un programme cote beaucoup
moins cher que son temps de
dveloppement : le but est de
crer des programmes le plus
rapidement possible, tout en
restant extrmement lisible et
maintenable.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 28 / 41

Python : le dveloppement logiciel productif et prenne

Nanmoins des besoins d'optimisation peuvent survenir. Pour ce qui est des
performances algorithmiques, Python permet d'exprimer simplement des
algorithmes complexes et de comparer les performances de diffrentes
approches, mais ne sera pas ncessairement la plateforme de choix pour
faire tourner, in fine, lesdits algorithmes.
Diverses approches ont t explores pour offrir des acclrations, sous la
forme d'implmentations alternatives, de compilation just-in-time, de
traduction de code ou simplement d'optimisations.
Voici diffrentes techniques pouvant tre utilises, dont certaines sont
capables d'atteindre les performances du langage C.
Psyco : c'est un mcanisme de compilation just-in-time. Psyco annonce un
gain moyen de 4x, mais pouvant aller jusqu'a 100x, et ne demande aucune
modification du code source. Il ne marche cependant que sur architecture
i386.
Stackless Python : Stackless Python vise amliorer le support du
multiprocesseur en ajoutant des outils de paralllisme au langage : les
tasklets, les channels, un ordonanceur...
PyPy : trs ambitieux et dop un temps par un financement europen, PyPy
est un projet de recherche visant effectuer de la traduction de code et de la
compilation. L'ide directrice est de traduire une description de Python
effectue en Python lui-mme vers des langages de plus bas-niveau. La
rumeur veut que le but recherch est d'aller plus vite que le C. PyPy
commence connatre des retombes intressantes et affiche des
performances souvent meilleures que le Python de rfrence.
Cython : produit des modules C partir du code python, permet de rendre
les types de variables
statiques, offrant dans ce
cas
de
grandes
optimisations. C'est l'outil
parfait pour acclrer les
zones d'un programme
qui doivent absolument
tre rapides.
Voici un bref graphique
comparatif de quelques
benchmarks,
afin
de
visualiser les diffrences
potentielles
entre
les
solutions mentionnes ci-dessus. L'unit est le temps mis par CPython sur
chaque algorithme.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 29 / 41

Python : le dveloppement logiciel productif et prenne

On constate que les possibilits d'acclration d'un code sont normes avec
Psyco qui est probablement l'une des solutions les plus efficaces
actuellement. Stackless Python trouve tout son intrt lors d'criture
d'applications multithread.

3. Outils de qualit et
d'industrialisation
Par dfaut et dans l'esprit, Python n'oblige pas les dveloppeurs utiliser des
outils lourds et contraignants, un simple diteur de texte et un terminal sont
suffisants pour dvelopper des applications de toutes tailles, y compris les
plus importantes. La courbe d'apprentissage est ainsi beaucoup plus douce
que dans d'autres environnements.
Nanmoins tous les outils sont prsents pour s'adapter aux gots de chacun,
aux pratiques modernes ainsi qu'aux contraintes industrielles. Cette section
prsente des outils qui doivent tre mis en place pour amliorer la qualit
des projets, l'intgration continue ou la ractivit des quipes.
3.Outils d'industrialisation..................................................................33
1.Index gnral des paquets Python...........................................................................
Python........................................................................... 34
2.Construction d'applications.....................................................................................
d'applications..................................................................................... 35
3.Dploiement d'applications......................................................................................
d'applications...................................................................................... 35
4.Tests automatiss et documents.............................................................................
documents............................................................................. 35
5.Qualit du code........................................................................................................
code........................................................................................................ 37
6.Intgration continue................................................................................................
continue................................................................................................ 38
7.Gnration de documentation..................................................................................
documentation.................................................................................. 39
8.Environnements de dveloppement intgrs...........................................................
40
intgrs...........................................................40
9.Dpts de code source.............................................................................................
source............................................................................................. 40
10.Forges de dveloppement......................................................................................
dveloppement...................................................................................... 41

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 30 / 41

Python : le dveloppement logiciel productif et prenne

1. Index gnral des paquets Python


Les
composants
applicatifs en Python
peuvent tre distribus
sous forme de paquets
individuels appels des
eggs. Un projet peut
donc tre dcompos en
plusieurs eggs et ceux-ci
peuvent tre facilement
rutiliss dans d'autres
projets.
Dans le cadre d'une
gestion de projet, le
dcoupage
en
eggs
facilite la rpartition des
tches entre plusieurs
quipes
qui
peuvent
publier individuellement
les versions de leur
module pour les intgrer
au produit final. La gestion de projet elle-mme peut donc tre spare et le
module peut suivre son propre cycle de dveloppement, test, publication,
intgration, mise en production, et maintenance corrective.
Les composants ayant un intrt gnral sont publis sur un site web
regroupant l'ensemble de ce qui est produit par la communaut : l'index PyPI
(Python Package Index). Cette pratique, courante dans le milieu du logiciel
libre, amliore la mutualisation du code, vite de rinventer ce qui existe
dj, permet de trouver facilement un module pour un besoin particulier, et
encourage tout le monde crire du code gnrique rutilisable.
Grce des outils comme PIP, tout composant prsent sur l'index PyPI peut
tre tlcharg et install d'une simple commande ou ajout un projet par
une simple ligne dans un fichier de configuration. l'inverse, un composant
peut tre publi sur l'index PyPI avec la mme facilit, ou ventuellement sur
un index priv, interne l'entreprise.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 31 / 41

Python : le dveloppement logiciel productif et prenne

2. Construction d'applications
Une application se compose gnralement d'un assemblage de produits, de
paquets, de bases de donnes, de bibliothques, de code source spcifique,
ou de configuration. Pour assembler tous ces lments de manire
automatique et rptable, il est possible d'utiliser un outil de construction.
Buildout en fait partie et est trs utilis dans le milieu du web. Il se base sur
une succession de recettes , chaque recette tant responsable d'une partie
de l'application, par exemple la mise en place de la base de donnes ou d'un
distributeur de charge. Les recettes sont elles-mmes distribues sous forme
de paquets Python et sont disponibles pour tous. Un unique fichier de
configuration de quelques dizaines de lignes est suffisant pour dcrire et
construire une application complexe en puisant dans diverses sources.

3. Dploiement d'applications
Le dploiement s'automatise facilement, soit en utilisant l'outil Buildout
mentionn dans le paragraphe prcdent, ventuellement en gnrant une
archive ou un paquet systme contenant l'application. Des outils additionnels
comme Fabric peuvent tre utiliss pour automatiser des tches
simultanment sur plusieurs serveurs. Pour des cas plus complexes, Salt peut
avantageusement tre utilis pour effectuer des dploiements et
configurations en parallle.

4. Tests automatiss et documents


Si les tests unitaires peuvent se pratiquer dans tous les environnements, la
plateforme Python offre une notion complmentaire extrmement bnfique :
les doctests . On peut prsenter les doctests au choix comme de la
documentation teste ou des tests documents. Ils permettent de
documenter et tester un projet en mme temps pendant la phase de
conception, avant mme l'criture du code. Il s'agit d'une succession de
paragraphes explicatifs et de morceaux de code de haut niveau donnant un
aperu de l'utilisation des composants applicatifs dans une console Python.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 32 / 41

Python : le dveloppement logiciel productif et prenne

En voici un exemple :
Voici comment utiliser la classe `Ham` avec ses attributs
et ses mthodes. On peut crer une instance de la classe et modifier ses
attributs :
>>>
>>>
>>>
>>>

from monprojet import Ham


ham = Ham()
ham.nom = 'nom du ham'
ham.valeurs = [2, 3, 4]

Ensuite on peut calculer la moyenne des valeurs grce une mthode `mean` :
>>> ham.mean()
3.0

Cette documentation peut tre excute comme un programme test et on


doit retrouver l'excution les mmes valeurs de sortie que dans le texte.
Les doctests sont complmentaires aux tests unitaires ou fonctionnels et
garantissent que la documentation existe et est jour. Cette technique
permet de travailler naturellement et simultanment en dveloppement
dirig par les tests et dveloppement dirig par la documentation.
L'ensemble de ces pratiques apportent des avantages indniables :

garantie de non-rgression

documentation existante et jour

dtection prcoce des erreurs de conception

possibilits d'intgration continue

En Python il est galement possible et conseill d'intgrer une (petite) partie


de la documentation directement dans le code source sous forme de
docstring, qui peuvent elles-mme tre des doctests ! On peut donc placer
des petits tests documents directement dans le corps du programme,
l'intention des dveloppeurs. Cette documentation intgre dans le code peut
ensuite tre teste et extraite automatiquement afin de gnrer
automatiquement des livres de documentation et des rapports de tests. Dans
ce cas d'utilisation, la proximit entre le code et les tests garantissent que les
tests sont adquats et modifis en mme temps.
Parmi l'ventail des outils de tests, on trouve galement des outils de mesure
du taux de couverture des tests, qui sont souvent intgrs par dfaut dans
les outils de lancement de test et doivent faire partie de l'indicateur final de
qualit.
Les outils de Mock sont galement utiles et aident simuler un composant
applicatif manquant pour les tests.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 33 / 41

Python : le dveloppement logiciel productif et prenne

5. Qualit du code
Analyse automatique : comme dj mentionn dans le premier chapitre, un
code Python doit prfrablement suivre un ensemble de conventions de
codage (dfinies dans le document PEP-8). En plus de ces conventions, il est
possible de dfinir un ensemble de rgles spcifiques un projet, ou de
contraintes supplmentaires sur le code. Des outils d'analyse du code sont
dans ce cas utiles pour vrifier ces rgles, et dfinir un ensemble de
mtriques de qualit respecter. Ces mtriques peuvent alors tre vrifies
en mme temps que les tests unitaires.
Parmi les outils d'analyse automatique du code, on peut citer Pylint, PyFlakes
Flake8 ou PyChecker. Ces outils sont capables de dtecter des problmes
potentiels dans le code, un manque de documentation, un non-respect des
conventions, des imports inutiles, des morceaux de code jamais excuts, etc.
Des indicateurs supplmentaires existent pour dtecter par exemple des
problmes de conception, mesurer la complexit cyclomatique du code, ou
trouver des redondances potentielles.
Analyse
humaine :
l'analyse
humaine se pratique notamment
grce des outils de revue de
code. L'application Review Board,
crite
elle-mme en Python
(Django), prend en charge cette
fonctionnalit : au travers d'une
interface web conviviale, le code
source peut tre comment, toute
modification peut tre soumise
approbation avant ou aprs
propagation dans le dpt.
Analyse alatoire : les outils de
fuzzing peuvent dtecter des
bugs ou des problmes de
scurit
en
soumettant
au
programme des donnes invalides gnres alatoirement, ou gnres
partir de donnes valides dont quelques bits ont t modifis alatoirement.
Plusieurs outils de ce genre sont crits en Python, l'un d'entre eux (Fusil) est
capable de tester n'importe quel programme et a mme servi dtecter des
problmes dans de nombreux logiciels tels que Gimp, PHP ou Python luimme.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 34 / 41

Python : le dveloppement logiciel productif et prenne

6. Intgration continue
Pour amliorer la qualit et la
ractivit d'un dveloppement, on
peut mettre en place un robot qui
lance
les
tests
unitaires
et
fonctionnels automatiquement, de
manire priodique ou de manire
synchrone ds qu'une modification
est effectue sur le code. L'quipe
peut tre ainsi avertie immdiatement et sans intervention humaine.
L'un des outils les plus utiliss est
BuildBot, un robot d'intgration
continue crit en Python. Cet outil est
trs souple. Un ensemble de clients
BuildBots peut tre lanc sur
diffrentes machines, par exemple un
Windows 32bits, un Linux 64bits, et
renvoyer les informations un
serveur Buildbot qui affiche un
tableau rcapitulatif de tous les tests
et de leurs rsultats. En mme temps
que les tests unitaires, le BuildBot
peut excuter et publier les analyses
de qualit de code. En fonction de ce
rsultat, n'importe quelle action
automatique peut tre entreprise,
comme l'envoi d'un e-mail ou le
hurlement d'un Tuxdrod.
Les mtriques de qualit peuvent
aussi tre recueillies par des outils
comme
Bitten
pour
faciliter
l'intgration continue. L'intrt de Bitten est qu'il s'intgre dans la forge
Trac, pour rapprocher les mtriques qualit de la gestion des tickets, la
documentation ou le code source.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 35 / 41

Python : le dveloppement logiciel productif et prenne

7. Gnration de documentation
L'univers Python utilise une syntaxe commune pour la documentation, les
commentaires de code ou les doctests : le reStructuredText (RST). Le RST a
la particularit d'tre conu pour tre lu directement. Il ne comporte pas
d'lments gnant la lecture tels que les balises ou les dlimiteurs de blocs
(crochets, accolades...), mais est inspir des pratiques intuitives d'criture de
contenu en mode texte pur. Voici un exemple :
Outils d'industrialisation
==========================
Par exemple, les titres de chapitre sont souligns de signes 'egal'
Gnration de documentation
--------------------------Les titres de paragraphe sont souligns de tirets,
l'emphase est indique avec des **toiles** (gras) ou des `quotes`
(italique)

Python fournit tous les outils ncessaires pour


valoriser de la documentation crite en RST. L'outil
phare de gnration de documentation dans
l'cosystme Python est Sphinx. Cet outil gnre
de la documentation au format HTML, PDF ou
Latex partir de documents en RST. Le html
produit offre par dfaut une interface web
conviviale avec une table des matires gnre
automatiquement et un moteur de recherche
intgr crit en Javascript. Il gre la coloration syntaxique des blocs de code
pour de nombreux langages. Il peut galement inspecter un projet pour
extraire la documentation du code et la liste des composants.
Sphinx peut tre utilis pour n'importe quel projet de documentation. Le
phase initiale d'criture de cette publication a elle-mme t gre avec cet
outil.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 36 / 41

Python : le dveloppement logiciel productif et prenne

8. Environnements
intgrs

de

dveloppement

Les
dveloppeurs
habitus
aux
environnement
de
dveloppement
intgrs pourront retrouver leurs
marques car il est possible de
travailler notamment avec Eclipse en
utilisant un module nomm PyDev, qui
offre tous les outils classiques d'un
EDI avec une spcialisation pour
Python :
compltion
de
code,
colorisation de syntaxe, analyse et
valuation de code, etc.
D'autres EDI non mentionns ici sont
disponibles, aussi bien libres que propritaires et souvent crits eux-mmes
en Python.

9. Dpts de code source


Les dpts de code source contiennent tout l'historique,
ligne par ligne, de l'volution du code source d'un projet.
En dehors de Subversion, encore trs utilis, la tendance
actuelle est l'utilisation de gestionnaires de version
dcentraliss comme Mercurial, Bazaar ou Git. Sur ces
trois systmes, les deux premiers sont crits en Python !
Leur intrt est multiple, ils ne ncessitent pas de serveur
central, sont faciles utiliser, autorisent un travail distant
hors-ligne, s'adaptent n'importe quelle organisation
d'quipe, et offrent de par leur fonctionnement une
rplication intrinsque pouvant servir de sauvegarde. De trs nombreux
projets migrent actuellement vers ces systmes, grce la facilit avec
laquelle on peut convertir un dpt Subversion en dpt dcentralis.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 37 / 41

Python : le dveloppement logiciel productif et prenne

10. Forges de dveloppement


Les forges sont des environnements
conviviaux regroupant dans une
interface unifie tous les outils utiles
pendant
les
phases
de
dveloppement d'un logiciel : gestion
des tickets, wiki de documentation,
navigation dans le code, gestion des
traductions, affichage des mtriques de qualit, affichage du rsultat des
tests automatiss, etc. Ces forges peuvent tre installes en interne dans les
entreprises et peuvent grer souvent plusieurs projets en mme temps. Trac
en fait partie : cette forge s'installe en quelques minutes et bnficie de
nombreux modules offrant des fonctionnalits additionnelles. Certaines de
ces forges possdent un pendant public comme le Launchpad de Canonical
qui gre de trs nombreux projets de logiciels libres, notamment le systme
d'exploitation Ubuntu Linux. Le Launchpad a t libr depuis quelques
mois, il offre un niveau fonctionnel trs large pour les entreprises souhaitant
s'en quiper.
Kallithea est une autre forge opensource crite en Python, issue d'un fork
de RhodeCode et qui a volu de manire
trs positive pour arriver un niveau
proche des solutions propritaires en
ligne comme Github ou Bitbucket. Elle
offre aujourd'hui tout ce dont une quipe
de dveloppement a besoin : navigation
dans des dpts Git ou Mercurial, revue et commentaire de code,
notifications, Gists, indexation des dpts, Pull requests, etc.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 38 / 41

Python : le dveloppement logiciel productif et prenne

4. Communaut
Le langage Python est dvelopp sur le mode communautaire et n'est pas
dpendant d'une seule entreprise. Il est le rsultat de travaux et de votes
issus
de propositions
d'amliorations
nommes
PEP
(Python
Enhancement Proposal). Au del du langage en lui-mme, la cration et le
support de l'ensemble des outils et bibliothques de l'cosystme est pris en
charge par une communaut internationale constitue d'entreprises,
particuliers, organisations ou associations.
En France, le ct associatif est
anim par l'afpy, au travers de
nombreuses activits :

confrence annuelle PyCon


FR

rencontres mensuelles sur


des sujets techniques et non
techniques

prsence
aux
salons,
rencontres et confrences :

Salon Solutions Linux

RMLL

OSDC fr

JDLL

JM2L

Rdaction de dossiers et articles de presse(Hors-Srie Linux Magazine


n40 sur Python)

Animation du site web http://afpy.org (forum, liste de diffusion, offres


d'emploi, etc.)

Prsence sur des canaux IRC

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 39 / 41

Python : le dveloppement logiciel productif et prenne

5. Conclusion
Les 20 ans d'ge de la plateforme Python lui ont apport une forte maturit
et ont engendr un cosystme trs vari. Cet cosystme est compos de
nombreux acteurs, institutions, indpendants, particuliers, associations, mais
surtout de trs nombreuses entreprises des plus petites aux plus grandes
comme Google ou Microsoft qui ont compris les avantages - agilit,
polyvalence, lisibilit et efficacit - et l'engouement que pouvait apporter ce
langage. Dans de nombreux pays et secteurs, on constate mme une forte
acclration du taux d'utilisation de Python. Tourne vers l'avenir, la
plateforme a galement russi sa modernisation avec la sortie d'une nouvelle
version majeure (3.0 3.4) qui se dbarrasse de certains dfauts de jeunesse.
Or, en dpit d'une bonne industrialisation de ses procds et la prsence de
nombreux outils, Python reste une plateforme extrmement facile aborder
et trs homogne. Cette homognit tire sa source d'une sensibilit propre
la communaut, qui se retrouve dans l'criture de ce qu'on appelle un code
pythonique . Qu'est-ce qu'un code pythonique ? Une premire rponse
existe dans l'interprte Python lui-mme :
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one -- and preferably only one obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 40 / 41

Python : le dveloppement logiciel productif et prenne

6. Licence et diffusion
Cette publication a t initialement rdige par Christophe Combelles et Gabriel Pettier
Alter Way Solutions. Elle est maintenant prise en charge par Anybox et est diffuse sous
licence Creative Commons Attribution-Share Alike 3.0, dont le texte complet se trouve
cette adresse :
http://creativecommons.org/licenses/by-sa/3.0/legalcode

Vous tes libres :


de reproduire, distribuer et communiquer cette cration au public

de modifier cette cration

Selon les conditions suivantes :


Paternit Vous devez citer le nom des auteurs originaux de la manire
indique par l'auteur de l'uvre ou le titulaire des droits qui vous confre
cette autorisation (mais pas d'une manire qui suggrerait qu'ils vous
soutiennent ou approuvent votre utilisation de l'uvre).
Partage des Conditions Initiales l'Identique Si vous transformez ou
modifiez cette uvre pour en crer une nouvelle, vous devez la distribuer
selon les termes du mme contrat ou avec une licence similaire ou
compatible.

AVERTISSEMENT : Cette licence concerne le texte du document. Les


marques dposes ou logos qui sont mentionns, utiliss ou cits
dans ce document sont et restent la proprit de leurs propritaires
respectifs.

Version 1.2 Publi sous licence CC-BY-SA 3.0 par Anybox

Page 41 / 41

Вам также может понравиться