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 |
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. |
|
Quelques helpers pour afficher dans un terminal proprement (couleur, indentation, quoting) sans se compliquer la vie. |
||
Appeler les programmes en lignes de commande comme si c’était des fonctions Python. Fonctionne automaGiquement. |
||
Une alternative élégante au module subprocessing qui permet d’appeler d’autres programmes depuis Python. |
||
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 |
Grep sous stéroïde. Utilisable en ligne de commande, ou programmatiquement. |
|
Améliore sensiblement l’API de manipulation des fichiers de Python en lui donnant un goût de POO et une certaine élégance. |
||
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 |
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. |
|
Création basique de paquets et gestion primitive de TCP/IP. Vise clairement le hacker qui veut rester proche de l’implémentation. |
||
API de haut niveau pour travailler à travers le protocole SSH. |
||
Interaction avec l’OS |
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. |
|
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. |
||
Une API simple et élégante pour interagir avec les variables d’environnement. |
||
Déploiement |
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 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é. |
||
Collection d’outils pour fabric pour étendre ses fonctionnalités et rajouter, par exemple, la gestion de dépendances des paquets. Encore jeune. |
||
Services |
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. |
|
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 |
Manipuler des périphériques USB depuis Python sous Windows. |
|
Manipuler des ports séries depuis Python. Nécessite l’extension JavaComm et ctypes sous Windows. |
||
Manipuler des ports parallèles depuis Python. Nécessite l’extension JavaComm. |
||
Bases de données |
||
SGBD |
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. |
|
Adaptateur pour se connecter à une base de données PostgreSQL. Demande une compilation si installé avec pip. |
||
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 |
Une sorte de SQLite en NoSQL, écrit en pur Python, et fourni avec son propre serveur HTTP optionnel. |
|
Tout ce qu’il faut pour jouer avec MongoDB. Mais nécessite distribute… |
||
Client pour Redis. Pur Python. Installer Hiredis pour le rendre plus rapide, mais cela demande compilation pour pip. |
||
Client officiel pour CouchDB. |
||
Un moteur d’indexation et de recherche de texte écrit en pur Python. Une sorte de SQLite pour moteur de recherche. |
||
ORM |
Un micro-ORM qui tient dans un fichier, il est néanmoins très capable. Parfait pour un petit script ou un projet desktop. |
|
Probablement l’ORM le plus complet au monde. |
||
Sécurité |
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 |
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. |
|
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. |
||
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. |
||
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 |
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 |
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 |
Traduction, localisation, dates naturelles… |
|
Manipuler des devises |
Des primitives pour effectuer le délicat travail de manipulation des devises. |
|
Multimédia |
||
Manipuler des images |
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 |
Jeux vidéos en 2D, du moteur graphique à la logique du jeu en passant par la musique. |
|
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 |
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. | |
Produire des documents au format XLS. |
||
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 |
Lanceur de tests avec auto détection des tests et des adaptateurs d’entrées et sorties pour beaucoup d’autres outils. |
|
La bibliothèque la plus connue pour faire du BDD (développement orienté comportement). |
||
Rend les tests plus simples à écrire et faciles à debugger. Très belle API, surtout comparée à xUnit. |
||
Documentation |
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 |
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. |
|
Similaire à p2exe, mais peut être lancé sous un autre OS que Windows. |
||
Des helpers pour incrémenter la version de son programme proprement. |
||
Développement |
Facilite la création de machines à états finis. |
|
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. |
||
Accéder à des classes Java sans sortir l’artillerie lourde (comme Jython). |
||
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. |
||
Appeler du C depuis Python. Si vous avez un .dll ou un .so qui vous tient à cœur, c’est par ici. |
||
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 |
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 |
Implémentation en Python de filtrage bayésien. Utile pour lutter contre le spam ou trouver des contenus qui se ressemblent dans leurs formes. |
|
Analyse linguistique en langage naturel, intelligence artificielle et même quelques Web spiders. |
||
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. |
||
Essaye de deviner la langue dans laquelle est écrit un texte. |
||
Essaye de deviner l’encodage dans lequel est écrit un texte. Utilisé par Mozilla. |
||
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. |
||
« Natural Language Toolkit » Une référence dans le domaine de l’analyse du langage naturel. |
||
Coloration syntaxique |
Rapide et puisant, mais ne détecte pas automatiquement le langage utilisé. |
|
Parser du XML |
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. |
|
Extrait les données de flux RSS et Atom. |
||
Transforme un arbre XML en un objet Python. Lent mais une belle API très agréable et facile à manipuler. |
||
Parser du HTML |
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é. |
|
L’API de jQuery, portée en Python. |
||
Parser un fichier binaire |
Transforme un fichier binaire en un arbre de champs manipulables. La bibliothèque est par ailleurs très modulaire. |
|
Lire et écrire dans le fameux format « standard » de MS Office. Dépendances lourdes : LXML et PIL. |
||
Lire et écrire en RTF, seul format 100 % compatible avec MS Office et LibreOffice. |
||
Lire et écrire des PDF, au pixel prêt. |
||
Manipuler les fichiers ODF en pur Python. |
||
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. |
||
Lire les documents produits par Excel. |
||
Science |
||
Calculs |
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. |
|
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 |
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. |
|
Création et manipulation de graphes nœud par nœud. Export en SVG. |
||
Analyse de données et modélisation |
Traitement en masse de gros échantillons de données pour en extraire les parties significatives et les traiter. |
|
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). |
||
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. |
||
Bibliothèque de simulation en Python similaire à REPAST ou NetLogo en moins puissant. |
||
Utiliser R, depuis Python. |
||
Web et Internet |
||
Crawling |
Un framework entier pour créer des bots qui vont parcourir et extraire des données de sites entiers. Vraiment très complet. |
|
Framework |
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. |
|
Framework POO assez complet mais sans ORM ni langage de template. Embarque un serveur HTTP en pur Python assez performant (et intégrable à Bottle). |
||
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. |
||
Une fusion de la plupart des anciens concurrents de Django. Beaucoup plus découplé. À surveiller. |
||
Un framework asynchrone plus accessible que Twisted, mais un peu moins performant et surtout spécialisé dans le Web. Utilisé notamment par Facebook. |
||
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 |
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. |
|
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. |
||
Support Python pour le protocole ZeroMQ. Nécessite une compilation de la part de pip. |
||
Implémentation prometteuse en pur Python d’un protocole de messagerie similaire à ZeroMQ. Jeune, immature, incompatible avec ZeroMQ. |
||
Proxys et serveurs |
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). |
|
Un serveur compatible WSGI assez rapide. Très utilisé en couple avec Nginx et Django. Nécessite une compilation pour pip. |
||
HTTP |
Simuler un navigateur Web incluant un moteur de rendu complet (Webkit) et donc JavaScript. Nécessite PySide et donc un gros boulot d’installation. |
|
Simule un navigateur Web (sans le JavaScript). |
||
Téléchargement des vidéos et metadata sur des dizaines de sites de streaming, de manière uniforme. |
||
Une surcouche à urllib2 qui rend l’utilisation de requête HTTP belle et agréable. |
||
Un wrapper de requests utilisant Gevent pour rendre la bibliothèque asynchrone. |
||
Webservices |
Actuellement le meilleur client pour gérer OAuth en Python. |
|
La seule bibliothèque efficace et stable pour créer un client SOAP. |
||
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. |
||
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. |
||
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.
Et flûte, le style de tableau est pourri sur ce thême WordPress…
Maxxxxxxxxxxxxx ! A l’aiiiiiiiiiide !
utilise le plugin de tabel qui est dans tools wp table reload, c celui que j’ai utilisé pour les abréviations de boule ;)
Énorme ! :-D
Ben ptain, merci Sam.
(Sinon, pour Ghost.py : « simulare » ?)
Ce qui serait marrant c’est de faire un ptit tuto pour chacunes d’entre elles^^
Wouahouoouu!!! ça déchire tout. Exellentissime !
@Max: tu pars devant hein…
@JM: ma que si, simulare de la mama pizza con ciccolini.
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.
Merci c’est trés complet.
Flask ? genshi ? pyparsing ? Python natural language toolkit (nltk) ?
@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 !
oufti!!!
T’essayes de concurrence Pypi??
Je suis déçu, y’a rien pour faire le café…
Je déconne, cette superbe liste m’a servi dès ce matin !
@Max : pour continuer le Module of the Week (http://www.doughellmann.com/PyMOTW/) ? Ça serait cool !
Dans la partie calcul, je rajouterais pyopencl (http://mathema.tician.de/software/pyopencl) qui permet de faire des calculs numériques sur GPU très facilement.
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.
@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.
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.
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 !
pour twitter, tweepy me semble mieux.
pour les templates j’aime bien pystache.
et pour la concurrence greenlet et eventlet.
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 ?
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)
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
@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)
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)
Effectivement pour requests j’ai lu trop vite.
pour hamlpy, vivement l’article.
@sam j’attends avec impatience l’article bien trolleux.
cPython compilé en javascript ça t’intéresse :D
https://github.com/replit/empythoned
Wo putain !
Que devient PySide, maintenant que Nokia a refilé le bébé Qt à Digia: ce dernier va continuer le développement?
Aucune idée. Developper un toolkit graphique, c’est super ingrat. Et aujourd’hui avec le tout web…
On dirait que j’avais eu une bonne idée ;), excellente initiative, claire et complète !
@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 !
Le défi désormais : tenir la liste à jour ;)
@julien: les génies pillent, tout ça…
@nain: tu m’étonnes !
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.
@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?
Tu te prends trop la tête man :-)
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.
Pour parser du XML, elementTree et sa version C celementTree est une bonne lib. pour manipuler ce type de données et écrire des datas en XML : http://docs.python.org/2/library/xml.etree.elementtree.html
Oui mais c’est pas du tierce partie. Cela dit il faudrait que je fasse une page similaire pour la lib standard.
Petite remarque. Matplotlib permet aussi de faire du 3D : http://matplotlib.org/examples/mplot3d/index.html :)
Ah. Au temps pour moi :-)
c’est pas “haut taons” qu’on dit?
otan?
Nan, c’est “hot han pour moi”, c’est étymologiquement tiré de la punition sodomite des soldats qui faisant une erreur.
Cork pour l’authentication avec Bottle: http://cork.firelet.net/
Vous utilisez quoi vous pour ça ?
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.
désolé mais salt n’est pas une lib
C’est vrai. C’est un outil. Ca ne devrait peut être pas être là. Bah, c’est pas super important.
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”
Je suis forcément partial, je connais tellement bien Django qu’il me parait très très facile à mettre en oeuvre.
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 ?
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).
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.
Posté en même temps que Sam, d’ou redite…
Celle-ci mériterais sa place: APScheduler
Notamment pour le Cron-style scheduling très pratique: http://packages.python.org/APScheduler/cronschedule.html
(juste faire gaffe comparé à crontab: 0 = monday et pas sunday)
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) ?
Ça n’utilise pas multiprocessing, seulement des threads. Oui tout se termine dès que le script principal est fini.
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 ^^
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.
Weboob ? C’est magique.
Gensim est une bibli bien sympa pour faire du traitement sur des corpus de documents (c’est à ranger à côté de NLTK)
http://radimrehurek.com/gensim/
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…
Ce n’est pas une lib tierce partie. C’est une lib standard, qui est dans l’autre listing:
http://sametmax.com/tres-grand-listing-des-libs-standard-partie-les-plus-utiles-en-python/
Est-ce que aurait sa place dans la liste ?
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.
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.
Un autre crawler: https://github.com/binux/pyspider
Vous ne voulez pas ajouter arrow ?
Toute la liste à besoin d’une mise à jour en fait.
@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…
Je n’ai pas envie de faire de cette liste une liste communautaire. C’est une liste partiale. Il en existe par ailleurs une très bien : https://github.com/vinta/awesome-python
@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.
En plus cet artile mérite une bonne mise à jour.
On aimerait tous une bonne mise a jour <3