Programmation Python/Bibliothèques pour Python

Une des grandes forces du langage Python réside dans le nombre important de bibliothèques logicielles externes disponibles. Une bibliothèque est un ensemble de fonctions. Celles-ci sont regroupées et mises à disposition afin de pouvoir être utilisées sans avoir à les réécrire.

Celles-ci permettent de faire : du calcul numérique, du graphisme, de la programmation internet ou réseau, du formatage de texte, de la génération de documents...

Bibliothèques standards

modifier

La distribution standard de Python contient un certain nombre de bibliothèques qui ont été considérées comme suffisamment génériques pour intéresser la majorité des utilisateurs.

Leur utilisation est relativement bien expliquée dans la documentation de la distribution.

Les couches de présentation des applications (couche IHM avec wxPython, pyQt, PyKDE Tk, tkinter 3000, pyGTK, pybwidget, Pmw, TIX)

les couches controller des serveurs d'application Web (analyse HTML -htmllib, xmllib, urlParse, mimetools- Serveur d'application : Zope - Django, Turbogears, CherryPy, Plone, GGI)

les couches Modele d'accès aux données (MySQL -MySQLdb- , Oracle -dcoracle-, MS SQL Server, PostgreSQL -psycopg-, FireBird -kinterbasdb- , SybODBC, GadFly, PySqlite, Zodb- BDD objet -)

la couche de persistance XML (4Suite, PySimpleXML, XmlSerializer, Jaxml) ou spécifique à Python (Cpickle, Shelve)

les couches d'accès au middleware ICE, COM/CORBA/.NET (win32, OmniORB, Ironpython) : programmation orientée composant (pont vers des bibliothèques Fortran, C et C++)

les couches de communication standalone (port série : pySerial, port parallèle : pyParallel) , réseau (Twisted, urllib2, HTMLparser, ftplib], socket, poplib, rfc822, mailbox, mhlib, imaplib, smtplib, telnet, etc.)

les couches de frameWork bas niveau (ajout de capacité de script. exemple : Boost.Python)

Les couches multimédia : traitement d'image (PIL)

Les couches utilitaires :

  • de gestion de l'heure (datetime, time)
  • de compression (gzip)
  • de codage/décodage de données binaires (hashlib -md5, sha- , base64, binHex, binascii)
  • de structure de données (decimal, deque, array, dico, list, queue, heapq)
  • de parallélisme (thread)
  • d'expressions régulières (re)
  • de différences (difflib)
  • d’accès au dll ou.so (ctype)
  • de manipulation de chaînes (string, str, StringIO)
  • de parseur (standard - shlex, ConfigParser, email, parser, cmd - ou Tierce- pyBison, ples, pyparsing, ply, PyGgy, Yapps, pyLR)
  • de calcul (math, numarrray - tableaux multidimensionnaires - , cmath, random)
  • de log (logging)
  • de test unitaire (unittest)

Le déploiement se fait soit en utilisant des modules d'installation standardisés (distutils), soit en générant un exécutable qui ne nécessite plus l'existence de l'interpréteur sur les machines cibles (Windows : py2exe, Cx_freeze; Unix : freeze)

Bibliothèques alternatives

modifier

Les bibliothèques les plus populaires et les plus utilisées (XML, interfaces graphiques...) bénéficient de pages dédiées sur le site principal du langage.

Il existe de nombreuses bibliothèques Python parmi lesquelles :

Nom Description
CGAL[1] Computational Geometry Algorithms Library : CGAL-Python bindings pour la CGAL library
CherryPy Framework de développement web.
Cocos2d[2] Frameworks multiplateformes pour construire des jeux 2d, démos ou des applications interactives graphiques en openGL (nécessite Pyglet)
CWM[3] Modules de parseur pour le web sémantique
directpython[4] Binding vers Direct X
Django Framework de développement web.
epydoc[5] Utilisé pour générer la documentation
FANN[6] Fast Artificial Neural Network Library : binding Python pour FANN
Gadfly Base de données
GENA[7] Algorithme génétique en Python
GMPY[8] General Multiprecision PYthon : interface vers la bibliothèque de précision arithmétique GNU GMP
gnuplot-py[9] Bibliothèque pour s'interfacer avec gnuplot
guidata[10] Librairie graphique basée sur Qt dédiée à l'affichage de données
guiqwt[11] Librairie graphique basée sur Pyqwt dédiée à l'affichage de courbes
Karrigell[12] framework de développement web.
Kinterbasdb Base de données
Matplotlib[13] Bibliothèque de dessin de courbe 2D (très riche)
Mahotas Bibliothèque d'analyse d'images
Maximum Entropy Modeling Toolkit[14] Framework qui met en œuvre le principe de l'entropie maximum
MayaVi2[15] Visualisation des données scientifiques en 2D/3D
MySQLdb Base de données
Buzhug Base de données
Orange|[16] Technique d'exploration de données, data mining
Panda 3D[17] Moteur 3D
PIL[18] Manipulation et traitement d'image
Pmw Interface graphique
Pybwidget Interface graphique
Psycopg Base de données
Py2exe[19] Créer un exécutable Windows pour vos scripts
pybel Interface pour la bibliothèque Open source de CHIMIE Open Babel.
Pychinko Implémentation de l'algorithme de Rete (pour le chaînage avant)
pyCLIPS[20] Module pour scripter le système expert CLIPS
pydot[21] Module pour scripter le générateur de graphique Graphviz
Pygame[22] Module de création de jeu 2D
Pyglet[23] module de création de jeu 2D utilisant l'openGL
pygsl[24] Interface vers GNU scientific library (gsl): vecteur, matrice, transformation de fourrier, recuit simulé, algèbre linéaire...
PyGTK Interface graphique
PyIMSL Studio[25] Framework pour le calcul scientifique s'appuyant sur les bibliothèques mathématiques et statistiques IMSL
pyinstaller[26] Création d'exécutable pour toute plateforme
Pylons[27] Framework de développement web.
pymedia[28] Module pour manipulations de fichiers wav, mp3, ogg, avi, divx, dvd, cdda, etc.
PyML[29] Python machine learning package : framework pour l'apprentissage par les machines (data mining ...)
pyMPI[30] Calcul parallèle
PyNGL[31] Bibliothèque pour créer des graphes 2D
PyOgre[32] Moteur 3D
PyPar[33] Calcul parallèle
pyParallel[34] Accès aux ports parallèles
pyro[35] Middleware Python Remote Objects
pyrorobotics[36] Environnement pour l'étude de la robotique et l'intelligence artificielle. Réseaux de neurones
pySerial[37] Manipulation des ports séries, non intégrés par défaut, bien que très souvent utilisés dans le monde industriel
PySFML[38] module de création de jeu 2D
PyUSB[39] Manipulation du port USB
PyVISA[40] Contrôle des ports GPIB, RS232, and USB
pyX[41] Python graphics package - Analyse de donnée
SAGE[42] logiciel d'algèbre et de géométrie (alternative à MAthematica, Maple ...) géométrie, théorie des nombres, cryptographie, calcul numérique...
Scikit-learn Librairie d'apprentissage automatique
scipy et NumPy[43] Framework pour le calcul scientifique. Interpolation, intégration (ODE integrators), algèbre linéaire (LAPACK), Interpolation, systèmes dynamiques (PyDSTool)
SCons[44] Alternative puissante à make (next-generation build tool)
simPy[45] Simulation de systèmes dynamiques à file d'attente
Soya[46] Moteur 3D
SVGdraw[47] Création d'image au format SVG (Scalable Vector Graphics)
Tkinter 3000 Interface graphique
TurboGears framework de développement web.
Twisted[48] Pluggable, asynchronous protocols (TCP, UDP, SSL/TLS, multicast, Unix sockets, HTTP, NNTP, IMAP, SSH, IRC, FTP)
VPython[49] Simulation 3D basée sur OpenGl
Web2py[50] framework de développement web.
wxPython[51] Bibliothèque d'accès à un toolkit très puissant (en particulier pour les interfaces graphiques)
Zope[52] Serveur d'application web orienté objet et base de données Objet

Références

modifier
  1. http://cgal-python.gforge.inria.fr/
  2. http://cocos2d.org/
  3. http://infomesh.net/2001/cwm/
  4. http://directpython.sourceforge.net/
  5. http://epydoc.sourceforge.net/
  6. http://leenissen.dk/fann/index.php
  7. http://www.madiku.org/ylrt3i0sfy/?p=1291
  8. http://gmpy.sourceforge.net/
  9. http://gnuplot-py.sourceforge.net/
  10. http://pypi.python.org/pypi/guidata/
  11. http://packages.python.org/guiqwt/
  12. http://karrigell.sourceforge.net
  13. http://matplotlib.sourceforge.net/
  14. http://homepages.inf.ed.ac.uk/s0450736/maxent_toolkit.html
  15. https://svn.enthought.com/enthought/wiki/MayaVi
  16. http://www.ailab.si/orange
  17. http://www.panda3d.org/
  18. http://www.pythonware.com/products/pil/
  19. http://www.py2exe.org/ (version pour Python 2.7)
  20. http://pyclips.sourceforge.net/
  21. http://dkbza.org/pydot.html
  22. http://www.pygame.org/news.html
  23. http://www.pyglet.org/
  24. http://pygsl.sourceforge.net/
  25. http://sites.google.com/site/roguewavesoftwarefrance/produits/PyIMSL-Studio
  26. http://pyinstaller.python-hosting.com/
  27. http://www.pylonshq.com
  28. http://pymedia.org/
  29. http://pyml.sourceforge.net/
  30. http://pympi.sourceforge.net/index.html
  31. http://www.pyngl.ucar.edu/index.shtml
  32. http://www.ogre3d.org/
  33. http://datamining.anu.edu.au/~ole/pypar/
  34. http://pyserial.sourceforge.net/pyparallel.html
  35. http://pyro.sourceforge.net/
  36. https://pypi.python.org/pypi/pyRobotics/1.5
  37. http://pyserial.sourceforge.net
  38. http://www.sfml-dev.org/tutorials/1.6/start-python-fr.php
  39. http://pyusb.berlios.de/
  40. http://pyvisa.sourceforge.net/
  41. http://pyx.sourceforge.net/
  42. http://modular.math.washington.edu/sage/
  43. http://www.scipy.org/
  44. http://www.scons.org/
  45. http://simpy.sourceforge.net/
  46. http://home.gna.org/oomadness/en/soya3d/index.html
  47. http://www2.sfk.nl/svg
  48. http://twistedmatrix.com/trac/
  49. http://www.vpython.org/
  50. http://www.web2py.com
  51. http://www.wxpython.org/
  52. http://www.zope.org/