# Programmation Python/Bibliothèques pour Python
## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp

## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp
[ Modifier le sommaire ]
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

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

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 | Computational Geometry Algorithms Library : CGAL-Python bindings pour la CGAL library |
| CherryPy | Framework de développement web. |
| Cocos2d | Frameworks multiplateformes pour construire des jeux 2d, démos ou des applications interactives graphiques en openGL (nécessite Pyglet) |
| CWM | Modules de parseur pour le web sémantique |
| directpython | Binding vers Direct X |
| Django | Framework de développement web. |
| epydoc | Utilisé pour générer la documentation |
| FANN | Fast Artificial Neural Network Library : binding Python pour FANN |
| Gadfly | Base de données |
| GENA | Algorithme génétique en Python |
| GMPY | General Multiprecision PYthon : interface vers la bibliothèque de précision arithmétique GNU GMP |
| gnuplot-py | Bibliothèque pour s'interfacer avec gnuplot |
| guidata | Librairie graphique basée sur Qt dédiée à l'affichage de données |
| guiqwt | Librairie graphique basée sur Pyqwt dédiée à l'affichage de courbes |
| Karrigell | framework de développement web. |
| Kinterbasdb | Base de données |
| Matplotlib | Bibliothèque de dessin de courbe 2D (très riche) |
| Mahotas | Bibliothèque d'analyse d'images |
| Maximum Entropy Modeling Toolkit | Framework qui met en œuvre le principe de l'entropie maximum |
| MayaVi2 | Visualisation des données scientifiques en 2D/3D |
| MySQLdb | Base de données |
| Buzhug | Base de données |
| Orange| | Technique d'exploration de données, data mining |
| Panda 3D | Moteur 3D |
| PIL | Manipulation et traitement d'image |
| Pmw | Interface graphique |
| Pybwidget | Interface graphique |
| Psycopg | Base de données |
| Py2exe | 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 | Module pour scripter le système expert CLIPS |
| pydot | Module pour scripter le générateur de graphique Graphviz |
| Pygame | Module de création de jeu 2D |
| Pyglet | module de création de jeu 2D utilisant l'openGL |
| pygsl | Interface vers GNU scientific library (gsl): vecteur, matrice, transformation de fourrier, recuit simulé, algèbre linéaire... |
| PyGTK | Interface graphique |
| PyIMSL Studio | Framework pour le calcul scientifique s'appuyant sur les bibliothèques mathématiques et statistiques IMSL |
| pyinstaller | Création d'exécutable pour toute plateforme |
| Pylons | Framework de développement web. |
| pymedia | Module pour manipulations de fichiers wav, mp3, ogg, avi, divx, dvd, cdda, etc. |
| PyML | Python machine learning package : framework pour l'apprentissage par les machines (data mining ...) |
| pyMPI | Calcul parallèle |
| PyNGL | Bibliothèque pour créer des graphes 2D |
| PyOgre | Moteur 3D |
| PyPar | Calcul parallèle |
| pyParallel | Accès aux ports parallèles |
| pyro | Middleware Python Remote Objects |
| pyrorobotics | Environnement pour l'étude de la robotique et l'intelligence artificielle. Réseaux de neurones |
| pySerial | Manipulation des ports séries, non intégrés par défaut, bien que très souvent utilisés dans le monde industriel |
| PySFML | module de création de jeu 2D |
| PyUSB | Manipulation du port USB |
| PyVISA | Contrôle des ports GPIB, RS232, and USB |
| pyX | Python graphics package - Analyse de donnée |
| SAGE | 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 | Framework pour le calcul scientifique. Interpolation, intégration (ODE integrators), algèbre linéaire (LAPACK), Interpolation, systèmes dynamiques (PyDSTool) |
| SCons | Alternative puissante à make (next-generation build tool) |
| simPy | Simulation de systèmes dynamiques à file d'attente |
| Soya | Moteur 3D |
| SVGdraw | Création d'image au format SVG (Scalable Vector Graphics) |
| Tkinter 3000 | Interface graphique |
| TurboGears | framework de développement web. |
| Twisted | Pluggable, asynchronous protocols (TCP, UDP, SSL/TLS, multicast, Unix sockets, HTTP, NNTP, IMAP, SSH, IRC, FTP) |
| VPython | Simulation 3D basée sur OpenGl |
| Web2py | framework de développement web. |
| wxPython | Bibliothèque d'accès à un toolkit très puissant (en particulier pour les interfaces graphiques) |
| Zope | Serveur d'application web orienté objet et base de données Objet |

## Références

* ↑ http://cgal-python.gforge.inria.fr/
* ↑ http://cocos2d.org/
* ↑ http://infomesh.net/2001/cwm/
* ↑ http://directpython.sourceforge.net/
* ↑ http://epydoc.sourceforge.net/
* ↑ http://leenissen.dk/fann/index.php
* ↑ http://www.madiku.org/ylrt3i0sfy/?p=1291
* ↑ http://gmpy.sourceforge.net/
* ↑ http://gnuplot-py.sourceforge.net/
* ↑ http://pypi.python.org/pypi/guidata/
* ↑ http://packages.python.org/guiqwt/
* ↑ http://karrigell.sourceforge.net
* ↑ http://matplotlib.sourceforge.net/
* ↑ http://homepages.inf.ed.ac.uk/s0450736/maxent_toolkit.html
* ↑ https://svn.enthought.com/enthought/wiki/MayaVi
* ↑ http://www.ailab.si/orange
* ↑ http://www.panda3d.org/
* ↑ http://www.pythonware.com/products/pil/
* ↑ http://www.py2exe.org/ (version pour Python 2.7)
* ↑ http://pyclips.sourceforge.net/
* ↑ http://dkbza.org/pydot.html
* ↑ http://www.pygame.org/news.html
* ↑ http://www.pyglet.org/
* ↑ http://pygsl.sourceforge.net/
* ↑ http://sites.google.com/site/roguewavesoftwarefrance/produits/PyIMSL-Studio
* ↑ http://pyinstaller.python-hosting.com/
* ↑ http://www.pylonshq.com
* ↑ http://pymedia.org/
* ↑ http://pyml.sourceforge.net/
* ↑ http://pympi.sourceforge.net/index.html
* ↑ http://www.pyngl.ucar.edu/index.shtml
* ↑ http://www.ogre3d.org/
* ↑ http://datamining.anu.edu.au/~ole/pypar/
* ↑ http://pyserial.sourceforge.net/pyparallel.html
* ↑ http://pyro.sourceforge.net/
* ↑ https://pypi.python.org/pypi/pyRobotics/1.5
* ↑ http://pyserial.sourceforge.net
* ↑ http://www.sfml-dev.org/tutorials/1.6/start-python-fr.php
* ↑ http://pyusb.berlios.de/
* ↑ http://pyvisa.sourceforge.net/
* ↑ http://pyx.sourceforge.net/
* ↑ http://modular.math.washington.edu/sage/
* ↑ http://www.scipy.org/
* ↑ http://www.scons.org/
* ↑ http://simpy.sourceforge.net/
* ↑ http://home.gna.org/oomadness/en/soya3d/index.html
* ↑ http://www2.sfk.nl/svg
* ↑ http://twistedmatrix.com/trac/
* ↑ http://www.vpython.org/
* ↑ http://www.web2py.com
* ↑ http://www.wxpython.org/
* ↑ http://www.zope.org/