Académique Documents
Professionnel Documents
Culture Documents
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
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
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 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
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
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 6 / 44
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
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 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
Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0
Page 10 / 44
Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0
Page 11 / 44
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
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
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
Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0
Page 15 / 44
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
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
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
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
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
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
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
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
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
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.
Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0
Page 25 / 44
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.
Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0
Page 26 / 44
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
Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0
Page 28 / 44
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
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
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
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
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
Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0
Page 34 / 44
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.
Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0
Page 35 / 44
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
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
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
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
Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0
Page 40 / 44
Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0
Page 41 / 44
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 :
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
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
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
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