Vous êtes sur la page 1sur 44

Livre blanc

PYTHON : le dveloppement autrement


Tour d'horizon de la plateforme

Christophe COMBELLES Gabriel PETTIER

version 1.0 / mars 2010

PYTHON : le dveloppement autrement

Alter Way, intgrateur Open Source de rfrence, accompagne les grands comptes, administrations, collectivits locales et Pme/Pmi dans le dveloppement et l'usage de leur systme d'information. Alter Way propose une offre industrielle 360, structure autour de quatre activits :

Conseil : Alter Way Consulting Intgration, dveloppement et infogrance : Alter Way Solutions Hbergement valeur ajoute : Alter Way Hosting Formation : Alter Way Formation

Accordant une place essentielle sa contribution et son implication dans lcosystme Open Source, Alter Way se caractrise par le niveau lev dexpertise de ses consultants, reconnus par la communaut. La socit se distingue galement par un investissement permanent en matire dinnovation, la plaant ainsi la pointe des plus rcentes avances technologiques. Alter Way fut la premire entreprise fdrer les acteurs historiques de lOpen Source autour dun projet dindustrialisation du march. Elle compte aujourdhui 90 collaborateurs. En 2009, elle a ralis une croissance de 12,5% avec un chiffre daffaires de 9 M. Pour plus dinformations : www.alterway.fr Les auteurs Christophe COMBELLES est expert et responsable du ple de comptence Python chez Alter Way Solutions. Il est vice-prsident de l'Association Francophone Python et contributeur sur de nombreux projets de logiciels libres. Gabriel PETTIER, dveloppeur chez Alter Way Solutions, est passionn par Python depuis 2005, organisateur bnvole pour l'association Ubuntu-fr et dveloppeur du jeu Ultimate Smash Friends. Avec l'aide de : Thomas Desvenain, Gal Pasgrimaud, Melissa Plenier, Denis Klementiev et les quipes Python et PHP d'Alter Way Solutions.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 2 / 44

PYTHON : le dveloppement autrement

Alter Way Consulting Alter Way Consulting est le ple Conseil dAlter Way. Alter Way Consulting met au service des entreprises et des administrations lensemble de lexpertise en technologies Open Source du groupe Alter Way afin dapporter une contribution dcisive aux projets de changement et dinnovation, clairer les choix technologiques et lever les freins rencontrs dans lutilisation de solutions Open Source. Alter Way Consulting couvre tous les aspects d'un projet IT, de la conception d'architecture l'audit de performances, et ce pour un nombre tendu de technologies. Ses missions sappuient sur une dmarche mthodologique prouve, garante de lapplication pertinente de son expertise technologique. Experts dans leur domaine, reconnus par leur communaut, les consultants dAlter Way Consulting sont aussi des praticiens qui mettent en uvre leurs comptences dans le quotidien oprationnel au sein des diffrents ples dAlter Way. Pour plus dinformations : www.alterwayconsulting.fr Alter Way Solutions Alter Way Solutions est le ple intgration, dveloppement et infogrance dAlter Way. Alter Way Solutions se caractrise par son approche industrielle s'appuyant sur des solutions Open Source quel que soit l'environnement technique cible (PHP, Python, Java, Ruby) et couvrant 2 domaines dexpertise :

Solutions applicatives : E-commerce, Portails, CMS/GED, CRM, BPM, BI ou dveloppement sur-mesure ; Solutions dinfrastructure : messagerie dentreprise, supervision, scurit, filtrage, IPAM, OS.

Accordant une place essentielle sa contribution et son implication dans lcosystme Open Source, Alter Way Solutions se caractrise par le niveau lev dexpertise de ses consultants, reconnus par la communaut. La socit se distingue galement par un investissement permanent en matire dinnovation, la plaant ainsi la pointe des plus rcentes avances technologiques. Pour plus dinformations : www.alterwaysolutions.fr Alter Way Hosting Alter Way Hosting est le ple hbergement valeur ajoute dAlter Way. Alter Way Hosting est leader de l'hbergement et de l'infogrance des technologies webs Open Source. Avec une gamme complte de solutions et services, la socit
Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 3 / 44

PYTHON : le dveloppement autrement

rpond tous les besoins en hbergement : mutualis, virtualis, ddi ou architecture. Alter Way Hosting accompagne ses clients en 24*7 avec des engagements (SLAs) d'intervention (GTI) et de rtablissement (GTR). Alter Way Hosting se distingue par sa matrise optimale des technologies Open Source et un savoir-faire reconnu dans l'exploitation des sites internet, intranets et applications Open Source. Alter Way Hosting se caractrise galement par une prestation visage humain, reposant sur des engagements stricts et certifis. Des clients tels que Generali, le Ministre de l'Agriculture et de la Pche, Prisma Presse font confiance Alter Way Hosting et bnficient de solutions d'hbergement performantes et scurises via un rseau IP ddi et 3 datacenters. Pour plus dinformations : www.alterwayhosting.fr Alter Way Formation Alter Way Formation est le ple Formation dAlter Way. Leader franais de la formation informatique aux technologies Open Source, Alter Way Formation accompagne les professionnels dans la matrise des logiciels libres. Alter Way Formation propose des formations standard et sur mesure, intra ou inter entreprise, couvrant lensemble des technologies Open Source : du systme dexploitation la Business Intelligence en passant par les bases de donnes, les langages, les frameworks et les applications. Son offre standard compte plus de 60 formations ainsi que des programmes de certifications Linux, MySQL, PHP et PostgreSQL. Alter Way Formation accompagne galement les professionnels dans la gestion de plan de formations et la conduite du changement. Membre actif de la communaut Open Source, Alter Way Formation travaille depuis ses toutes premires heures la promotion et la vulgarisation des logiciels libres en entreprise. Ses consultants-formateurs ont publi plusieurs ouvrages de rfrence et participent de nombreux projets et vnements communautaires. Alter Way Formation dlivre plus de 1000 formations par an, dans ses 6 centres de formation rpartis entre Paris, Lille et Lyon. Pour plus dinformations : www.alterwayformation.fr

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 4 / 44

PYTHON : le dveloppement autrement

PYTHON : le dveloppement autrement


Tour d'horizon de la plateforme

Python est une plateforme complte et gnraliste pour le dveloppement logiciel, trs facile d'accs et capable de se spcialiser de manire trs pointue dans la quasi-totalit des domaines informatiques. Python est utilis par un public trs large, des dveloppeurs web professionnels, des chercheurs en intelligence artificielle ou en bioinformatique, 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, vue d'en haut ?

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'une communaut d'entreprises, d'individus et d'associations Un march en forte croissance

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 5 / 44

PYTHON : le dveloppement autrement

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

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


1.Services fournis en standard...........................................................................11 standard...........................................................................11 2.Accs aux bases de donnes...........................................................................13 donnes...........................................................................13 3.Sites et applications web...............................................................................16 web...............................................................................16 4.Calcul et visualisation scientifique...................................................................21 scientifique...................................................................21 5.Scripting d'applications.................................................................................24 d'applications.................................................................................24 6.Interfaces Graphiques...................................................................................26 Graphiques...................................................................................26 7.Scripts/administration Systme.......................................................................29 Systme.......................................................................29 8.Jeux vidos...............................................................................................30 vidos...............................................................................................30 9.Performances et algorithmique.......................................................................31 algorithmique.......................................................................31

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

4.Communaut.....................................................................................42 5.Conclusion........................................................................................43 6.Licence et diffusion.............................................................................44

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 6 / 44

PYTHON : le dveloppement autrement

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. 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 . Ce document tend homogniser les programmes Python et favoriser l'change et la collaboration.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 7 / 44

PYTHON : le dveloppement autrement

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.

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.
Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 8 / 44

PYTHON : le dveloppement autrement

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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 9 / 44

PYTHON : le dveloppement autrement

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 web avec Django ou Zope), 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 des 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 rutilisabilit des comptences . Ces considrations sont une des causes de ce que l'on appelle le Paradoxe Python : les dveloppeurs Python semblent difficiles trouver, 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...........................................................................11 standard...........................................................................11 2.Accs aux bases de donnes...........................................................................13 donnes...........................................................................13 3.Sites et applications web...............................................................................16 web...............................................................................16 4.Calcul et visualisation scientifique...................................................................21 scientifique...................................................................21 5.Scripting d'applications.................................................................................24 d'applications.................................................................................24 6.Interfaces Graphiques...................................................................................26 Graphiques...................................................................................26 7.Scripts/administration Systme.......................................................................29 Systme.......................................................................29 8.Jeux vidos...............................................................................................30 vidos...............................................................................................30 9.Performances et algorithmique.......................................................................31 algorithmique.......................................................................31

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 10 / 44

PYTHON : le dveloppement autrement

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 difflib datetime calendar math random zlib csv ConfigParser sqlite3 md5, sha shutil io threading subprocess multiprocessing expressions rationnelles calculs de delta de diffrences oprations sur les dates et heures oprations sur des calendriers oprations mathmatiques oprations alatoires oprations de compression lecture/criture de fichiers .CSV lecture/criture de fichiers .INI accs des bases de donnes SQLite oprations de hachage oprations de haut niveau sur les fichiers oprations de bas niveau sur des flux de donnes programmation multithread cration de sous-processus programmation multiprocessus

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 11 / 44

PYTHON : le dveloppement autrement

Quelques exemples de modules standards pour la programmation rseau et internet :


ssl email json webbrowser cgi httplib ftplib poplib imaplib smtplib BaseHTTPServer Cookie xmlrpclib connexion rseau scurise oprations sur des courriels encodeur et dcodeur JSON gestion des navigateurs internet outils pour la programmation web en CGI programmation HTTP programmation FTP rception d'e-mail par POP gestion d'e-mail par IMAP envoi d'e-mail (SMTP) un serveur web basique gestion des cookies connexion des services web XML-RPC

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


wave colorsys imghdr sndhdr manipulation de fichiers audio WAV conversion de couleurs RGB, HSV, YIQ dtection des types d'images dtection des types de fichiers audio

Exemples de modules utiles au dveloppement, dbogage, profilage, galement fournis en standard :


pydoc doctest unittest pdb profile gc inspect gnrateur automatique de documentation criture de la documentation testable criture des tests unitaires le dbogueur Python le profileur Python accs au Garbage Collector 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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 12 / 44

PYTHON : le dveloppement autrement

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 DB-API. 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

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 13 / 44

PYTHON : le dveloppement autrement

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 plusieurs dizaines de 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 document , et possdant un pilote Python. oriente

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 tables ou 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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 14 / 44

PYTHON : le dveloppement autrement

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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 15 / 44

PYTHON : le dveloppement autrement

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 sont presque entirement crits en Python. Les offres d'hbergement mutualis classiques faible cot proposent 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 dix ans, il est compltement industrialis, support par une importante communaut internationale et possde un trs grand nombre de modules d'extension. La version 4.0, sur le point d'tre publie, surprend actuellement par les normes gains en performances qu'elle apporte, et qui justifient eux seuls une migration vers cette version. Pour la gestion d'entreprise, on trouve deux PGI Open Source (Progiciels de Gestion Intgrs) : OpenERP connat une croissance fulgurante. Il fonctionne la fois en mode web et avec un client lourd. Il possde un nombre impressionnant de modules mtiers. En outre, il se base sur une plateforme de dveloppement rapide OpenObject avec laquelle il est possible de dvelopper une application d'entreprise en un temps record. L'autre PGI majeur est ERP5. 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.
Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 16 / 44

PYTHON : le dveloppement autrement

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
L'intrt d'un framework (ou cadriciel en franais) est d'offrir de manire cohrente toutes les briques de base pour crer une application en se concentrant uniquement sur les fonctionnalits mtiers. Ainsi, les frameworks se chargent de vous offrir toutes les notions 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 deux frameworks majeurs : Django et Zope. La partie immerge, tout autant digne d'intrt, est aborde plus bas. Django est un framework web 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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 17 / 44

PYTHON : le dveloppement autrement

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 normment utilis et a donn naissance tout un cosystme, compos de frameworks, micro-frameworks modernes, bibliothques et outils. L'cosystme Zope se dcompose en plusieurs sous-projets : Zope 2 est la version historique du serveur d'application Zope. Il est toujours largement utilis, et constitue la base de grands logiciels comme Plone ou ERP5. Les nombreuses annes d'utilisation et de dveloppement de Zope 2 et l'exprience acquise pendant cette priode ont men une rcriture complte et modulaire de Zope, menant au dveloppement d'une Architecture de Composants. La Zope Component Architecture (ZCA) est l'architecture innovante sur laquelle se base aujourd'hui tout l'cosystme Zope. Elle se base sur une utilisation intelligente de Design Patterns, et permet de crer des composants applicatifs gnriques, rutilisables et testables individuellement. Grce ce dcoupage en composants, il devient possible de grer des applications d'un trs haut niveau de complexit et de fiabilit. Le Zope Toolkit (ZTK) est l'ensemble des bibliothques Zope utilisant cette Architecture de Composants. Tout ce travail a donn naissance trois frameworks compatibles avec la spcification WSGI:

BlueBream est le serveur d'applications issu de la rcriture de Zope 2. Il supprime son aspect monolithique et utilise intensivement la ZCA. C'est le nouveau nom de Zope 3 en 2010 ! Grok est un framework bas sur le Zope Toolkit, trs similaire BlueBream et proposant une mthode simplifie de configuration des composants. BFG est un micro-framework ultra-lger et trs simple, offrant la fois les principes MVC et ceux de publication d'objets de Zope. Il n'oblige pas les dveloppeurs comprendre la ZCA pour dvelopper une application.

Grce cette architecture, ces trois frameworks sont ouverts les uns aux autres : les composants crits pour l'un sont facilement rutilisables avec les autres.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 18 / 44

PYTHON : le dveloppement autrement

Les succs de Django et Zope 2 proviennent de leur caractre monolithique, et 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 Pylons, TurboGears, CubicWeb, web2py ou CherryPy. 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 Django ou Zope 2, une alternative intressante est de crer des applications par assemblage de composants gnriques. Le principe est de partir d'une base minimale (comme BFG ou Pylons), 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 de ce livre blanc en page 13.
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).

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 19 / 44

PYTHON : le dveloppement autrement

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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 20 / 44

PYTHON : le dveloppement autrement

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, ou de visualisation. 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 sousmatrices, 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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 21 / 44

PYTHON : le dveloppement autrement

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.

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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 22 / 44

PYTHON : le dveloppement autrement

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.

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

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 http://wiki.python.org/moin/NumericAndScientific l'adresse suivante :

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 23 / 44

PYTHON : le dveloppement autrement

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.

OpenOffice.org
La clbre suite bureautique libre, pousse par Sun, 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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 24 / 44

PYTHON : le dveloppement autrement

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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 25 / 44

PYTHON : le dveloppement autrement

6. Interfaces Graphiques
Python permet de crer des interfaces graphiques de manire simple et rapide, avec l'aide d'une bibliothque graphique adquate. 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. D'autres bibliothques similaires existent, comme Tk, dont l'interface est mme fournie par dfaut avec Python.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 26 / 44

PYTHON : le dveloppement autrement

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, avec en plus l'accs un ensemble supplmentaire de widgets (Kiwi).

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 27 / 44

PYTHON : le dveloppement autrement

Autres types d'interfaces graphiques


D'autres technologies matures ou innovantes existent. En voici quelques exemples : PyMT est un framework autorisant la cration d'interfaces tactiles Multipoint (multitouch) acclres grce OpenGL, sous Linux Ubuntu, MacOsX ou Windows 7. 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 Capture d'cran d'une dmo d'interface multipoint en Python 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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 28 / 44

PYTHON : le dveloppement autrement

7. Scripts/administration Systme
De par sa nature dynamique et multiplateforme, et aid par sa syntaxe simple et claire, Python se rvle tre un bon langage pour la programmation de scripts systmes. Ainsi on le retrouve de faon de plus en plus frquente dans de nombreux scripts d'installation, de configuration, de maintenance, de surveillance, par exemple dans les distributions linux comme Ubuntu, Pardus, Redhat, Fedora ou Gentoo. On le trouve mme depuis quelques temps dans les outils courants des administrateurs Windows visant une efficacit maximale. 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. Entre autres exemples, les modules suivants peuvent tre d'une utilit immdiate pour un administrateur systme ayant une tche automatiser:

sys : fonctions fortement lies l'interprte Python os : fonctions lies au systme d'exploitation shutil : fonctions de haut niveau pour la gestion de fichiers stat : pour obtenir les informations prcises sur des fichiers logging : module simplifiant la cration de journaux d'vnements tarfile, zipfile : gestion des archives format zip et tar commands : appel et traitement des retours de programmes externes pwd : gestion scurise des mots de passes

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 29 / 44

PYTHON : le dveloppement autrement

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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 30 / 44

PYTHON : le dveloppement autrement

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. 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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 31 / 44

PYTHON : le dveloppement autrement

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 luimme 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. Unladen Swallow : initi par Google, c'est une modification de Python dont le but est de rester 100% compatible tout en offrant de fortes acclrations. L'objectif est d'obtenir une acclration de 5x. Les premiers rsultats donnent entre 1 et 2x, et Google estime que la marge de progression est encore norme. 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 cidessus. L'unit est le temps mis par CPython sur chaque algorithme. 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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 32 / 44

PYTHON : le dveloppement autrement

3. Outils 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....................................................................34 Python....................................................................34 2.Construction d'applications............................................................................35 d'applications............................................................................35 3.Dploiement d'applications............................................................................35 d'applications............................................................................35 4.Tests automatiss et documents....................................................................35 documents....................................................................35 5.Qualit du code..........................................................................................37 code..........................................................................................37 6.Intgration continue.....................................................................................38 continue.....................................................................................38 7.Gnration de documentation.........................................................................39 documentation.........................................................................39 8.Environnements de dveloppement intgrs.......................................................40 intgrs.......................................................40 9.Dpts de code source..................................................................................40 source..................................................................................40 10.Forges de dveloppement............................................................................41 dveloppement............................................................................41

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 33 / 44

PYTHON : le dveloppement autrement

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 Distribute et 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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 34 / 44

PYTHON : le dveloppement autrement

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 faut 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. Des projets trs rcents et prometteurs comme Silver Lining s'inspirent des techniques du Cloud Computing pour le dploiement sur des serveurs virtuels. Silver Lining pourra terme dployer des applications faites dans d'autres langages comme PHP pour lequel une prise en charge exprimentale existe dj.

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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 35 / 44

PYTHON : le dveloppement autrement

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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 36 / 44

PYTHON : le dveloppement autrement

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 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. La revue de code est une pratique excellente mais non sans risques au niveau humain : elle peut entraner des tensions entre dveloppeurs et doit tre mise en place avec prcaution et concertation. 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 OpenOffice.org ou Python lui-mme.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 37 / 44

PYTHON : le dveloppement autrement

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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 38 / 44

PYTHON : le dveloppement autrement

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 ce livre blanc a elle-mme t gre avec cet outil.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 39 / 44

PYTHON : le dveloppement autrement

8. Environnements de dveloppement intgrs


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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 40 / 44

PYTHON : le dveloppement autrement

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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 41 / 44

PYTHON : le dveloppement autrement

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

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 42 / 44

PYTHON : le dveloppement autrement

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 cette plateforme. Dans de nombreux pays, on constate mme une forte acclration du taux d'utilisation de Python (+45% aux tats-Unis depuis le printemps 2008). Tourne vers l'avenir, la plateforme a galement russi sa modernisation avec la sortie d'une nouvelle version majeure (3.0 et 3.1) 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!

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 43 / 44

PYTHON : le dveloppement autrement

6. Licence et diffusion
Ce livre blanc est publi 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.

Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0

Page 44 / 44

Vous aimerez peut-être aussi