(Très) Grand listing des libs tierce partie les plus utiles en Python


Je n’ai pas tout mis, et quand j’ai omis c’est soit par ignorance, soit par choix. Je suis partial et limité et puis bon, y a plus de 22000 packages sur Pypi… :-) Ça m’a quand même pris une bonne partie de mon dimanche de compiler tout ça. Enjoy. (voir aussi: une liste similaire pour la lib standard)

Sujet

Nom de la bibliothèque

Description

Administration système

Outils autour de la ligne de commande

Pexpect

Capture de sortie avancée, mais surtout des facilités pour discuter avec le programme comme si on était un humain devant sa console en train de taper.

Clint

Quelques helpers pour afficher dans un terminal proprement (couleur, indentation, quoting) sans se compliquer la vie.

Sh

Appeler les programmes en lignes de commande comme si c’était des fonctions Python. Fonctionne automaGiquement.

Envoy

Une alternative élégante au module subprocessing qui permet d’appeler d’autres programmes depuis Python.

Pyped

Un petit outil pour pouvoir piper des sorties de commande et les traiter avec des one-liners en Python, comme on fait avec Perl.

Manipuler des fichiers

Grin

Grep sous stéroïde. Utilisable en ligne de commande, ou programmatiquement.

Path.py

Améliore sensiblement l’API de manipulation des fichiers de Python en lui donnant un goût de POO et une certaine élégance.

Watchdog

API multiplateforme pour surveiller les changements dans le système de fichiers (création de dossier, édition, etc) et y réagir.

Manipuler le réseau

Scapy

Un couteau suisse pour le réseau qui clame pouvoir remplacer programmatiquement hping, 85% de nmap, arpspoof, arp-sk, arping, tcpdump, tethereal et p0f. Non testé par l’auteur, mais il a une bonne réputation.

DPKT

Création basique de paquets et gestion primitive de TCP/IP. Vise clairement le hacker qui veut rester proche de l’implémentation.

Paramiko

API de haut niveau pour travailler à travers le protocole SSH.

Interaction avec l’OS

Psutil

Outil multiplateforme qui permet d’obtenir les informations que fournissent ps, top, df, kill, free, lsof, netstat, ifconfig, nice, ionice, iostat, iotop, uptime, pidof, tty, who, taskset et pmap.

Win32

Travailler directement avec l’API COM de Windows. Utile pour contrôler des programmes avec des macros en VB, donner des ordres à MS Office et avoir accès à certains appels que seul le Dieu des DLL connaît. Installable via un .exe.

Env

Une API simple et élégante pour interagir avec les variables d’environnement.

Déploiement

Salt

Salt peut gérer entièrement et rapidement votre infrastructure même si elle compte des milliers de serveurs, à travers des fichiers de conf. Lancement de services, installation de paquets, gestion des dépendances…

Fabric

Fabric a les mêmes objectifs que salt mais l’approche est différente : d’accès plus facile, il vise les déploiements de moyenne taille et utilise des fichiers de code en Python, et non de configuration. Exécuter une installation à distance via SSH automatiquement est sa spécialité.

Fabtools

Collection d’outils pour fabric pour étendre ses fonctionnalités et rajouter, par exemple, la gestion de dépendances des paquets. Encore jeune.

Services

Supervisor

Démarre, arrête et relance gracieusement des services. N’importe quel programme peut être défini comme un service dans un fichier de configuration adapté, et sera daemonisé, monitoré et relancé si besoin en cas de crash. Très utilisé pour gérer les daemons de celery, gunicorn, etc. Un très bon remplacement à tous ces scripts dans /etc/init.d.

Circus

Vise le même but que supervisor, mais gère en plus les sockets. Il peut être réparti sur plusieurs nœuds qui communiquent avec ZeroMQ (qui est donc une dépendance). Le projet est soutenu par Mozilla. Si vous cherchez la simplicité, restez sur supervisor, si vous cherchez la puissance, circus est fait pour vous.

Matériel

PyUSB

Manipuler des périphériques USB depuis Python sous Windows.

PySerial

Manipuler des ports séries depuis Python. Nécessite l’extension JavaComm et ctypes sous Windows.

PyParallel

Manipuler des ports parallèles depuis Python. Nécessite l’extension JavaComm.

Bases de données

SGBD

mysql-python

Malgré le nom inversé, c’est bien ce paquet qu’il faudra installer pour obtenir les drivers MySQL. Nécessite distribute (pip install distribute) et une compilation pour pip avec dépendances.

Psycopg

Adaptateur pour se connecter à une base de données PostgreSQL. Demande une compilation si installé avec pip.

PyODBC

Permet de se connecter aux base de données qui possèdent une interface ODBC, telles que MS Access. Requiert une compilation pour pip.

NoSQL

Codernitydb

Une sorte de SQLite en NoSQL, écrit en pur Python, et fourni avec son propre serveur HTTP optionnel.

PyMongo

Tout ce qu’il faut pour jouer avec MongoDB. Mais nécessite distribute…

Redis

Client pour Redis. Pur Python. Installer Hiredis pour le rendre plus rapide, mais cela demande compilation pour pip.

Couchdb

Client officiel pour CouchDB.

Woosh

Un moteur d’indexation et de recherche de texte écrit en pur Python. Une sorte de SQLite pour moteur de recherche.

ORM

Peewee

Un micro-ORM qui tient dans un fichier, il est néanmoins très capable. Parfait pour un petit script ou un projet desktop.

SQLAlchemy

Probablement l’ORM le plus complet au monde.

Sécurité

PyCryto

La référence du chiffrement en Python pour tous vos besoins autour de AES, Blowfish, SHA, etc. Nécessite une compilation par pip.

Desktop

Ces bibliothèques sont difficiles à installer dans un environnement virtuel. Exceptionnellement, installez-les au niveau de l’OS en utilisant un installer fourni sur le site officiel ou dans les dépôts de votre système, et non avec pip.

Développer une interface graphique

Kivy

Pour le moment très jeune. Permet de développer des UI sur les principaux systèmes d’exploitations et sur Android ainsi que iOS. Gère le multi-touche.

PyGTK

Binding Python des bibliothèques GTK, assez simple à utiliser et très bien intégré au bureau GNOME bien qu’il existe des moyens de porter une application sur d’autres OS. La documentation est globalement moins bonne que celle de PySide/PyQT.

PySide

Portable et très complet, PySide est aussi complètement compatible avec PyQt mais offre une licence plus permissive (LGPL). Le projet est soutenu par Nokia.

wxPython

Très portable, et moins dur à packager que les autres, mais avec une API très proche du C et un manque de widgets modernes.

Développer une interface console

Urwid

Création d’interfaces textuelles avancées dans la lignée de curses, mais avec des widgets supplémentaires, une bonne gestion des couleurs et de l’UTF-8 et une courbe d’apprentissage assez raide.

Localisation

Calcul avancé avec des dates et des périodes

Dateutil

Un complément puissant compatible avec datetime et qui propose en plus un parseur avancé, une gestion des récurrences et des durées relatives.

I18n

Babel

Traduction, localisation, dates naturelles…

Manipuler des devises

Python-money

Des primitives pour effectuer le délicat travail de manipulation des devises.

Multimédia

Manipuler des images

PIL

Le standard de la manipulation d’images en Python. Toutes les opérations de base y sont, mais elle est assez difficile à installer.

Création de jeu vidéo et d’animations

PyGame

Jeux vidéos en 2D, du moteur graphique à la logique du jeu en passant par la musique.

PyOpenGl

Un binding OpenGL en Python qui donne accès à OpenGL (v1.1 à 4.3), GLU, GLUT v3.7, FreeGLUT, GLE 3 et des centaines d’extensions OpenGL. En prime, PyOpenGl est interopérable avec wxPython, PyGame, PyQt / PySide et PyGTK.

Générer des documents

Jinja2

Un langage de template proche de celui de Django qui limite le code Python utilisable et est facile d’accès.

Mako

Un langage de template au rendu très rapide qui autorise n’importe quelle expression Python dans le document.

xlwt

Produire des documents au format XLS.

Weasyprint

Une solution plus simple pour générer du PDF que Reportlab : générer du HTML et le convertir en PDF. Excellent si vous n’avez pas de besoin en lecture et si vous pouvez assumer la dépendance à PyGTK.

Outils

Tests unitaires

Nose

Lanceur de tests avec auto détection des tests et des adaptateurs d’entrées et sorties pour beaucoup d’autres outils.

Lettuce

La bibliothèque la plus connue pour faire du BDD (développement orienté comportement).

PyTest

Rend les tests plus simples à écrire et faciles à debugger. Très belle API, surtout comparée à xUnit.

Documentation

Sphinx

Permet d’écrire sa documentation au format RST et génère du HTML statique avec un moteur de recherche hors ligne très propre. Standard dans le monde de Python.

Packaging

p2exe

Transforme un programme Python en exécutable Windows. Il n’y a pas de magie cependant, et cela demande un certain travail. Par ailleurs, cela ne crée pas un installateur pour autant.

cx_Freeze

Similaire à p2exe, mais peut être lancé sous un autre OS que Windows.

Versiontools

Des helpers pour incrémenter la version de son programme proprement.

Développement

Xworkflows

Facilite la création de machines à états finis.

Gevent

Monkey patch les fonctions de réseau de la bibliothèque standard pour les rendre asynchrones et ainsi gagner en performance sur la lecture et l’écriture.

Pyjnius

Accéder à des classes Java sans sortir l’artillerie lourde (comme Jython).

Showme

Une collection de décorateurs pour facilement et rapidement regarder le temps, le nombre de cycles CPU et l’entrée/sortie d’une fonction.

Ctypes

Appeler du C depuis Python. Si vous avez un .dll ou un .so qui vous tient à cœur, c’est par ici.

Batbelt

Une bibliothèque fourre-tout qui contient des fonctions-outils fort sympathiques pour la vie de tous les jours en Python : slugification, parcours d’itérables avec fenêtre, capture de stdout dans une variable, imports dynamiques simplifiés, sets ordonnés, etc. Absence totale de documentation, mais très bien commentée.

Parsing

Parser les arguments de la ligne de commande

Clize

Permet de transformer l’appel d’une fonction automatiquement en une liste d’argument pour le script en cours. Très simple et tient dans un fichier mais utilise en interne un parsing manuel.

Catégoriser du contenu

Reverend

Implémentation en Python de filtrage bayésien. Utile pour lutter contre le spam ou trouver des contenus qui se ressemblent dans leurs formes.

Pattern

Analyse linguistique en langage naturel, intelligence artificielle et même quelques Web spiders.

FuzzyFuzzy

La documentation dit « Fuzzy string matching like a boss ». C’est bien résumé. API très simple pour des comparaisons floues sur les chaînes de caractères.

guess_language

Essaye de deviner la langue dans laquelle est écrit un texte.

Chardet

Essaye de deviner l’encodage dans lequel est écrit un texte. Utilisé par Mozilla.

PyParsing

Créer des parseurs pour des langages dont la grammaire est régulière en utilisant Python plutôt que des choses compliquées comme Lex.

NLTK

« Natural Language Toolkit » Une référence dans le domaine de l’analyse du langage naturel.

Coloration syntaxique

Pygments

Rapide et puisant, mais ne détecte pas automatiquement le langage utilisé.

Parser du XML

LXML

Facile, puissant, rapide, mais pip devra compiler cette bibliothèque. Dans ses dernières versions, gère aussi le HTML, mais n’a pas la même tolérance que BeautifulSoup.

Feedparser

Extrait les données de flux RSS et Atom.

Untangle

Transforme un arbre XML en un objet Python. Lent mais une belle API très agréable et facile à manipuler.

Parser du HTML

Beautiful Soup

Pas très rapide mais très puissant, mais capable d’analyser du HTML très mal formé, et est écrit en pur Python. N’utilisez pas la version 3. En concurrence avec HTML5Lib que je n’ai pas testé.

PyQuery

L’API de jQuery, portée en Python.

Parser un fichier binaire

Hachoir

Transforme un fichier binaire en un arbre de champs manipulables. La bibliothèque est par ailleurs très modulaire.

python-docx

Lire et écrire dans le fameux format « standard » de MS Office. Dépendances lourdes : LXML et PIL.

PyRTF

Lire et écrire en RTF, seul format 100 % compatible avec MS Office et LibreOffice.

Reportlab

Lire et écrire des PDF, au pixel prêt.

OdfPy

Manipuler les fichiers ODF en pur Python.

Pod

Une solution hybride qui part d’un template au format ODF (et pouvant contenir du code Python) qui ensuite génère du PDF, DOC, RTF ou TXT derrière. Requiert LibreOffice en mode serveur.

xlrd

Lire les documents produits par Excel.

Science

Calculs

NumPy

Bibliothèque de calculs scientifiques haute performance avec gestion des grands jeux de nombres, matrices avec n dimensions et même de quoi réutiliser son vieux code C/C++ ou Fortran. Requiert une compilation pour pip.

SciPy

Utilise la puissance de NumPy pour fournir des opérations avancées rapides sur les grands jeux de nombres et les matrices.

Création de graphiques

Matplotlib

Produit des graphiques en 2D de bonne qualité, du plus simple au plus complexe. Très bien intégré au shell iPython avec lequel il permet de recréer un environnement similaire à MatLab.

Networkx

Création et manipulation de graphes nœud par nœud. Export en SVG.

Analyse de données et modélisation

Pandas

Traitement en masse de gros échantillons de données pour en extraire les parties significatives et les traiter.

PyTables

Manipulation de gros jeux de données hiérarchiques avec optimisation automatique des ressources disque et mémoire utilisées (notamment en utilisant la compression à la volée).

Tablib

API élégante pour importer, manipuler et exporter des jeux de données tabulaires. Supporte la ségrégation, les colonnes dynamiques, les tags et le filtrage ainsi que l’export JSON, YML, CSV et XLS.

SimPy

Bibliothèque de simulation en Python similaire à REPAST ou NetLogo en moins puissant.

RPy2

Utiliser R, depuis Python.

Web et Internet

Crawling

Scrappy

Un framework entier pour créer des bots qui vont parcourir et extraire des données de sites entiers. Vraiment très complet.

Framework

Bottle

Un micro-framework qui tient dans un fichier. Excellent pour débuter la programmation Web avec Python ou pour un petit projet vite fait. Pas d’ORM, mais un langage de template.

CherryPy

Framework POO assez complet mais sans ORM ni langage de template. Embarque un serveur HTTP en pur Python assez performant (et intégrable à Bottle).

Django

Le plus utilisé dans la communauté Python. Très intégré, extrêmement complet (ORM, template, formulaire, admin, middlewares, etc), grande quantité de ressources et de bibliothèques autour du projet. Malgré cela, assez facile à prendre en main.

Pyramid

Une fusion de la plupart des anciens concurrents de Django. Beaucoup plus découplé. À surveiller.

Tornado

Un framework asynchrone plus accessible que Twisted, mais un peu moins performant et surtout spécialisé dans le Web. Utilisé notamment par Facebook.

Twisted

Spécialisé dans la programmation asynchrone. Peut faire bien plus que du Web, en fait tout ce qui est réseau, et en haute performance. Le prix a payer est sa complexité. Nécessite d’être compilé par pip.

Messaging

Celery

Surcouche à Kombu pour implémenter des files de tâches et des tâches récurrentes. On l’utilise généralement en lieu et place de Kombu.

Kombu

Le statu quo dans la gestion de messages et de queues, proposant une interface unifiée quel que soit le broker. Supporte RabbitMQ, Redis, Beanstalk, Amazon SQS, CouchDB, MongoDB et ZooKeeper.

PyZMQ

Support Python pour le protocole ZeroMQ. Nécessite une compilation de la part de pip.

SnakeMQ

Implémentation prometteuse en pur Python d’un protocole de messagerie similaire à ZeroMQ. Jeune, immature, incompatible avec ZeroMQ.

Proxys et serveurs

Deliverance

Prend le design de n’importe quel site en ligne et l’adapte sur un autre site que vous possédez. Pratique pour changer l’aspect d’un site dont le thème est très difficile à modifier (exemple : un site Zope ou Plone).

Gunicorn

Un serveur compatible WSGI assez rapide. Très utilisé en couple avec Nginx et Django. Nécessite une compilation pour pip.

HTTP

Ghost.py

Simuler un navigateur Web incluant un moteur de rendu complet (Webkit) et donc JavaScript. Nécessite PySide et donc un gros boulot d’installation.

Mechanize

Simule un navigateur Web (sans le JavaScript).

Youtube-dl

Téléchargement des vidéos et metadata sur des dizaines de sites de streaming, de manière uniforme.

Requests

Une surcouche à urllib2 qui rend l’utilisation de requête HTTP belle et agréable.

Grequest

Un wrapper de requests utilisant Gevent pour rendre la bibliothèque asynchrone.

Webservices

Python-oauth2

Actuellement le meilleur client pour gérer OAuth en Python.

Suds

La seule bibliothèque efficace et stable pour créer un client SOAP.

Spyne

SOAPLib marche très bien pour créer des serveurs SOAP, mais elle est dépréciée. Elle est néanmoins intégrée dans Spyne, qui se veut une solution généraliste pour créer des Webservices.

Facepy

Un client pour interagir avec la Graph API de Facebook. Seule alternative à jour depuis l’abandon de FB de sa propre lib et l’absence de mise à jour de facebook-sdk.

Twitter

Un client basique pour interagir avec Twitter.

Vous pouvez rajouter en com’ toute lib qui vous semble utile. Si je l’aime, je l’insérerais dans le poste. Par avance, je vous indique que j’ai volontairement mis de côté: paste, zope, plone et buildout car à mes yeux leurs valeurs ajoutées ne compensent pas la complexité qu’elles apportent.

72 thoughts on “(Très) Grand listing des libs tierce partie les plus utiles en Python

  • Sam Post author

    Et flûte, le style de tableau est pourri sur ce thême WordPress…

    Maxxxxxxxxxxxxx ! A l’aiiiiiiiiiide !

    • Max

      utilise le plugin de tabel qui est dans tools wp table reload, c celui que j’ai utilisé pour les abréviations de boule ;)

  • Max

    Ce qui serait marrant c’est de faire un ptit tuto pour chacunes d’entre elles^^

  • Sam Post author

    @Max: tu pars devant hein…

    @JM: ma que si, simulare de la mama pizza con ciccolini.

  • Christophe Simonis

    PIL est mort, il est préférable d’utiliser Pillow

    Sinon, libs oubliées (si c’est par choix, merci d’expliquer pourquoi):
    */ expecter: écrivez les assertions de vos tests de manière lisible.
    */ docopt: mélangez documentation et argument de ligne de commande
    */ Numba: booster votre code python
    */ Flask: Microframework web basé sur Werkzeug, Jinja2 et de bonnes intentions.

  • apieum

    Merci c’est trés complet.

    Flask ? genshi ? pyparsing ? Python natural language toolkit (nltk) ?

  • Sam Post author

    @Christophe:

    expecter: moins bien que pytest.
    docopt: plus compliqué que clize
    numba: très intéressant. J’ai pas la compétence pour le tester, mais ça mérite qu’on lui donne sa chance
    Flask: excellent produit mais aucune valeur ajoutée si on utilise déjà bottle (qui en plus tient dans un seul fichier), cherrpy (qui en plus possède un serveur en pur Python performant) et django (qui fait 100 fois plus).

    @apieum:

    flask: cf ci-dessus
    genshi: je n’aime pas la syntaxe. Mais ça me fait penser qu’il faut que je rajoute jinja2 et mako
    pyparsing et nltk: ah oui, bien vu !

  • Kontre

    Edit (masqué) : numba a l’air super intéressant, mais j’ai l’impression que c’est encore en version pre-alpha. En attendant y’a cython, mais ce n’est pas un module python au sens strict.

  • Sam Post author

    @Kontre:

    Hop!

    https://github.com/doloopwhile/Python-CoffeeScript

    PyOpenCL à l’air très intéressant. Comme pour numba, je ne peux pas le rajouter dans la liste car je n’ai aucune expérience avec mais c’est chouette de l’avoir en comment. Les libs comme NumPy ou Scipy, je les rajoute car j’ai lu suffisament de témoignages de pointures dessus durant les dernières années pour faire semblant de savoir de quoi je parle.

    @Etienne:

    Justement, sur pypi ça plus de 20 000 libs. Et aucun moyen de savoir lesquelles sont bonnes, ce qu’on peut VRAIMENT faire avec (pas ce qu’elles annoncent) et la difficulter d’installation ou le coût de la maintenance.

    La, je compile 10 ans de veille techno :-)

    Honnêtement cette page va me servir autant à vous qu’à moi car j’oublie très facilement certaines libs quand je ne m’en sert pas pendant un bout de temps.

  • Etienne

    Dans les framework web y’a aussi Web2py, que j’utilises actuellement. Comme débutant j’ai trouvé ça plus facile d’accès que Django, tout en étant “prêt à porter”, contrairement à un Bottle avec lequel tu dois assembler ce dont t’as besoin, ce qui n’est pas évident quand tu n’as aucune idée du résultat auquel tu dois arriver.

  • fero14041

    Web2py est vraiment un concept sympa, mais j’ai horreur de son interface web de gestion. En terme de profondeur, il vaut django et pyramid. Par contre il y a beaucoup moins d’app tierces partie.

    EDIT: WOOOOOOOOOOOOOOOOOOOPS.

    Ceci n’est pas un commentaire de fero mais de Sam. Je me suis gourré et je me suis loggué avec son compte. Sorry !

  • apieum

    pour twitter, tweepy me semble mieux.
    pour les templates j’aime bien pystache.
    et pour la concurrence greenlet et eventlet.

  • Sam Post author

    Faudra que je test tweepy :-)

    Par contre, j’avoue que je comprends pas l’engouement (visiblement général) autour de mustache et ses dérivés. Qu’est-ce qu’il a de si cool ?

  • apieum

    mustache fournit une approche MVP, il est simple, léger et tu peux l’utiliser dans pleins de langages différents.
    Puis il te “contraint” (volontairement) a faire les choses assez proprement.(les conditions et les boucles dans des template c’est pas top)

  • Oyo

    Comme outils, pour les templates django .. Hamlpy

    Pour simplifier l’utilisation de urllib2 .. Request

    Sinon une petite correction dans gevent: -pub-bliothèques

    Merci pour le partage

  • Sam Post author

    @apium: ouai, moi j’ai du mal sans un peu de logique. Tout faire hors d’un template, ça peut vite tuer les performaces, notemment si tu cache des fragments HTML et pas des requêtes. Mais c’est vrai qu’il a l’avantage d’être multi langage.

    @oyo
    Je pense que je vais bientôt écrire un gros article bien trolleux pour descendre en flamme haml, coffescript et autres surcouche. Stay tuned :-p (PS: request est dans la liste)

  • anthony

    Wow merci pour cette liste !

    Pour afficher qq trucs en 3D quand pas le temps pour du gros OpenGL, j’aime bien VPython (http://www.vpython.org/) pour sa simplicité.

    Pydot (http://code.google.com/p/pydot/) Graphviz binding [http://www.graphviz.org/]

    BioPython, juste génial: http://biopython.org/wiki/Main_Page

    Pour servir des charts (line, bar) en svg via bottle: DrawSVG: https://github.com/petercollingridge/DrawSVG (j’aime car pure python et pas de dépendance externe [donc facile à utiliser sous Android] et très light)

  • Oyo

    Effectivement pour requests j’ai lu trop vite.

    pour hamlpy, vivement l’article.

  • fero14041

    Que devient PySide, maintenant que Nokia a refilé le bébé Qt à Digia: ce dernier va continuer le développement?

  • Sam Post author

    Aucune idée. Developper un toolkit graphique, c’est super ingrat. Et aujourd’hui avec le tout web…

  • Julien Hautefeuille

    On dirait que j’avais eu une bonne idée ;), excellente initiative, claire et complète !

  • Julien Hautefeuille

    @Sam le développement de PySide continue. C’est un framework avec lequel il est agréable de développer, j’aime bien le concept de signal/slot !

  • Sam Post author

    @julien: les génies pillent, tout ça…

    @nain: tu m’étonnes !

  • Morgotth

    On en a rêvé, vous l’avez fait :D

    Comme beaucoup j’avais commencé une liste semblable, donc si je peux apporter ma pierre à l’édifice :

    tox: Deploiement et tests sur plusieurs virtualenv, semble très complet

    pythonbrew: equivalent de RVM mais pour Python

    taskmaster: file d’attente distribuée. Alternative légére de Celery

    httpie: librairie + curl en python (utilise requests et pygments)

    glances: equivalent de HTOP

    Plus des utilitaires ici, dans la suite de grin que vous avez présenté plus haut.

  • fero14041

    @Sam:
    En fait, qu’appelle-tu “lib tierce partie” exactement? un bout de soft seulement intégrable? ou des outils plus “terminaux”, comme par ex. tox évoqué par Morgotth rentrent-ils également dans cette catégorie? Et dans le premier cas, que fait-on de logiciels comme fabric, qui peuvent être utilisés tels quels et comme lib?

  • fero14041

    Ah, ça… c’était aussi pour ne pas pourrir les comm’.
    Donc je suggestionnerais de rajouter à la présente liste:

    * Mercurial, le gestionnaire de version décentralisé multi-plateforme et user-friendly;
    * Trac, le gestionnaire de tickets qu’il est tellement bien qu’il a inspiré Redmine — même si en période d’essoufflement notable ces dernières années;
    * MoinMoin, le moteur de wiki Python sans base de données (va changer avec la v2);
    * Pylint, de Logilab: vérificateur statique de bugs de code Python? voire pep8 et flake8?
    * un ou des outils d’automatisation: scons, waf, paver ou doit?
    * Shinken, un des prétendants à la succession de Nagios.

  • Sam Post author

    Oui mais c’est pas du tierce partie. Cela dit il faudrait que je fasse une page similaire pour la lib standard.

  • Sam Post author

    Nan, c’est “hot han pour moi”, c’est étymologiquement tiré de la punition sodomite des soldats qui faisant une erreur.

  • Sam Post author

    On fait pas d’authentification avec Bottle. Si un site demande de l’authentification, on passe à Django car c’est un signe sûr que la complexité du site va être suffisante pour bénéficier d’un vrai gros framework.

    Malgré tout, c’est une bonne chose de savoir que ça existe, et je vais le twitter de ce pas.

    • Sam Post author

      C’est vrai. C’est un outil. Ca ne devrait peut être pas être là. Bah, c’est pas super important.

  • anthony

    On fait pas d’authentification avec Bottle. Si un site demande de l’authentification, on passe à Django

    Django semble trop lourd pour le petit truc que je fais, j’ai juste besoin d’avoir certains WS nécessitant d’être loggé. J’ai fait un truc tout light pour Bottle si ça peut être utile à qqun: http://sebsauvage.net/paste/?e4879dde597e513c#PJZHW7QIISIH38tRpV/hyMAiumpZB7Z9+FkW6GaNsRw=

    Il faut juste ajouter @auth() sur le service:

    route(‘/’, method=’GET’)
    @auth
    def hello():
    return “hello”

  • Sam Post author

    Je suis forcément partial, je connais tellement bien Django qu’il me parait très très facile à mettre en oeuvre.

  • IxDay

    Bon je vais peut-être dire une grosse connerie mais bon :
    On m’a dit un jour que le multithread en python natif c’était pas sa (oui oui moi je crois tous ce qu’on me dit). Ma question était si il existe des bonnes libs pour faire ce genre de chose. Et alors attention la masterchief des questions à la con : quelle est la différence entre le multithread et la gestion de tache et de queue ?

  • Sam Post author

    Le multithreading en Python permet de s’affranchir des problèmes d’I/O, mais pas de profiter des processeurs multicoeur. Aucune lib ne peut changer cela, c’est une limitation liée à l’implémentation en C.

    Pour profiter au maximum du parallélisme, on utilise plutôt le multiprocessing..

    Quand à la gestion des queues, c’est juste une manière d’organiser un enchaînement d’appel de code. Il se trouve qu’en multithread et dans les environnements concurrents, on utilise beaucoup les queues afin d’éviter les problèmes de conflit d’accès. Enfin, les tâches sont juste une des applications que l’ont peut trouver à utiliser des queues.

    Il faut noter que l’implémentation d’une queue n’est pas limité aux threads: on peut le faire à travers de nombreux moyens (monothread, multiprocessing, avec un serveur de queue, etc).

  • anthony

    On m’a dit un jour que le multithread en python natif c’était pas sa

    Python utilise bien les threads natives de l’OS. Mais en CPython 2 instructions ne s’exécuteront pas en même temps (GIL), cela ne veut pas dire que Python n’est pas multithread. Je crois avoir vu qu’a partir de Python 3.2 le GIL avec reçu un lifting qui améliore un peu ça.

    Le principal problème (que je vois), est que Python ne va utiliser pleinement les multi-coeurs, e.g. sur un 4 coeurs tu auras 1 seul coeur utilisé. Pour remédier à ça il faut utiliser le module multiprocessing.

  • Sam Post author

    Ca à l’air pas mal mais un truc m’échappe. Ca demande un daemon de plus ou ça utilise multiprocessing et lance le bouzin depuis le script courant (et donc se termine en même temps que le script principal) ?

  • anthony

    Ça n’utilise pas multiprocessing, seulement des threads. Oui tout se termine dès que le script principal est fini.

  • Sam Post author

    C’est pas pas mal alors, un bon complément léger à celery. Il faudrait lui permettre d’utiliser multiprocressing. Je vais voir si il y a pas un pull request à jouer ^^

  • Teocali

    Tiens, je me demande si je peux remplacer l’usage de mechanize par celui de ghost.py dans mon module weboob. Après tout, il utilise deja QT pour les interfaces graphiques.

    Et non, ce n’est pas un site de videos de boules mais bien pour le home bank ING belgium. :p

    Prochaine étape, Xhamster et redtube, parce que faut pas déconner, youporn et youjizz, c’est pas assez.

  • Sve@r

    Bonjour
    Super sympa. Toutefois déçu de ne pas trouver l’excellentissime librairie “decimal” permettant de gérer des nombres décimaux en précision parfaite…

    • Sam Post author

      Ca mérite d’être dans les commentaires en tout cas. Après, comme je n’en n’avais jamais entendu parlé, je vais pas le rajouter car je ne peux me prononcer.

  • Mathieu

    Nokia n’est plus en charge, c’est Digia, formée de core devs Qt, qui a récupéré la chose, donc on peut assumer que PySide vivra aussi longtemps que Qt.
    Suds n’est plus maintenu depuis 2009, et les bugs dedans sont trèèèès nombreux. Un mec maintient un fork très à jour sur bitbucket : https://bitbucket.org/jurko/suds/. C’est la meilleur version de suds dispo, il a fait bcp de bugfix et a écrit des tests unitaires, absents dans suds. C’est la seule version de suds vraiment utilisable à ce jour à mon sens.
    Pour GTK+, faut maintenant utiliser PyGobject, nouveau binding dynamique de GTK : http://live.gnome.org/PyGObject. La doc est encore succinte.

  • boblinux

    @Sam&Max

    Tu devrais refourguer ça dans un dépôt github, ou refiler au groupe github indexErrorCoders, afin qu’il puisse être maintenu par tous à jour, ça t’évitera de tout de taper tout seul, ainsi chacun pourra ajouter /modifier la liste, en fonction de ses experiences/compétences sur les libs, découvertes de nouvelles libs etc…

  • Mathieu

    @sam: Vu que cette liste est sensée durer, il faut éviter de pinner les numéro de version dans les urls. Au mieux, ça pointe vers une version obsolètes, au pire, ça fait une 404 (les projets ne maintiennent les docs d’une version V qu’un certain temps). Par exemple, l’url de la doc de Fabric pointe sur la 1.5, obsolète depuis la mort d’Amy Winehouse :). D’ailleurs, autant pointer sur le site officiel du projet que sur celui de la doc.

Comments are closed.

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.