Bottle : le plus petit disponible (tient dans un fichier). Génial pour du code jetable ou des petits sites, etc. Fantastique outil d’enseignement et d’apprentissage. En plus, ça tient plutôt bien la charge compte tenu de la taille.
django : le framework Python le plus connu. On peut tout faire avec, l’écosystème est fantastique (il y a des apps djangos tierces partout pour tout et n’importe quoi, c’est un truc de fou). Mais le maîtriser prend du temps. Efficace pour construire un site web avec beaucoup de logique personnalisée. Au final, si on veut être sérieux dans en programmation Web avec Python, on finit toujours par passer par Django.
flask : sa taille est entre django et bottle, et avec tout ce qu’il faut pour faire un site de taille moyenne. Il commence à avoir pas mal de plugins disponibles un peu partout sur la toile, et est une alternative très sympa quand on n’a pas besoin de charger les 3 tonnes de Django.
wep2py : se positionne en alternative à Django et Flask, mais avec une philosophie très différente. Pas mal de magie (à la rails), des interfaces graphiques pour l’admin, composants très couplés mais très intégrés… Je ne suis pas fan, mais on m’en a dit du bien.
cherrypy : un framework WSGI pure Python qui a de très bonnes perfs sans rien rajouter, même en prod. Mais depuis qu’ils ont rendu disponible sa partie serveur et qu’on peut l’utiliser pour Django/flask/bottle, ça ne vaut plus le coup d’utiliser sa partie framework qui n’a rien de fantastique.
pyramid : le plus gros compétiteur de Django en termes de fonctionnalités. Beaucoup moins monolithique, et bien plus flexible, donnant pas mal de contrôle. Mais l’intégration des composants de django le rend beaucoup plus facile à maîtriser, et son écosystème est 100 fois meilleur (j’ai toujours été en froid avec l’écosystème Zope).
twisted un framework internet asynchrone en pur Python. J’ai dit INTERNET, pas WEB. On peut faire HTTP, mais aussi SSH, IMAP, FTP, et à peu près n’importe quoi. Surpuissant, et ses performances sont incroyables. Son API est aussi la plus merdique de tout l’univers Python. Apprendre et utiliser Twisted, c’est comme se branler avec des gants de boxe en récitant l’alphabet à l’envers.
tornado : framework Web asynchrone. Techniquement le seul compétiteur de nodejs en pur Python (pas de gevent, d’extension C, etc) si on exclue crossbar encore trop immature. L’API n’est pas incroyable, mais pas trop dur, et les perfs sont bonnes. Les Websocket marchent clé en main.
cyclone : tornado qui tourne dans l’event loop de twisted. Pour pouvoir utiliser l’API de tornado pour le Web, mais les outils de twisted pour le reste. Si vous êtes capable d’utiliser ça à son plein potentiel, qu’est-ce que vous foutez à lire cet article ?
webpy : un ancêtre. Un fantôme du passé. Do not use.
Il existe ensuite tout un tas d’expérimentations de framework avec asyncio, gevent, etc. C’est plus du bricolage qu’autre chose pour le moment, alors je ne recommande pas de base un gros projet dessus à moins d’être déjà très à l’aise avec la prog web python.
“Apprendre et utiliser Twisted, c’est comme se branler avec des gants de boxe en récitant l’alphabet à l’envers.” :’D Purée la phrase culte j’en peux plus là… Merci
Rendons à Caesar: je l’ai piqué à Bref.
… Et l’ironie, c’est que ce blog est toujours propulsé par WordPress malgré toute ces frameworks alternatifs Python (dont certains ont de très bonnes applications pour faire des blogs) :-)
On a déjà répondu 100 fois à cette assertion. Faudra que je fasse un article un jour.
Au temps pour moi dans ce cas, je ne feuillette que rarement les commentaires, et quand je le fais, c’est en diagonale. J’ai dû loupé la remarque à chaque fois.
J’aimerais bien voir l’article tout de même car je sais bien que WordPress a des qualités et c’est intéressant de voir lesquels sont mises en avant.
Dans la même catégorie que Bottle (fichier unique, pas de dépendance), j’ai créé un mini framework l’an dernier: https://github.com/florentx/fiole
J’ai conjugué les meilleures fonctions des mini-frameworks que j’ai testé, suivant mes goût personnels.
J’avais également pondu une courte comparaison avec Bottle et Flask: http://fiole.readthedocs.org/en/latest/developer.html
Si ça peut ajouter de l’eau au moulin …
@Maxime, Je crois que le premier argument c’est la flemme et je respecte ça :)
Mais quand j’ai droit au bug “de la page qui s’affiche en mobile alors que 2 secondes avant j’étais sur la page d’accueil en desktop”, je me dis que quand même ce serait bien de changer.
@Zanguu : La flemme et surtout le côté pratique.
J’ai jamais fait de blog en python pour être honnête, mais si tu regarde là : https://wiki.python.org/moin/PythonBlogSoftware ça fait pas envie. Les 3/4 des projets sont morts, le mieux que j’ai vu est Mezzanine (http://mezzanine.jupo.org/) mais pas de thèmes, pas d’extensions.
Si tu fais un blog c’est pour publier, pas pour développer.
Wordpress a des inconvénients, je trouve le code dégeulasse, mais l’installation est simple, l’utilisation, la configuration et la personnalisation idem et les ressources infinies.
Ok Sam et Max ont vendu leurs âmes pour la facilité de WordPress mais je ferais pareil.
Un bon blog seo friendly, multi-user avec un installer simple, un système de backup et une thème responsive qui déchire tu fais ça en 3 jours avec un bon framework python ou autre.
Le problème c’est la maintenance, cela peut prendre plusieurs jours par an (upgrade du framework), alors qu’avec WordPress tant que tu as une config apache, nginx solide, les mises à jours sont automatique et la securité est plus que bonne.
Maintenant ce qui est reproché ici, c’est le fait que des dev django, développeurs plutôt perfectionnistes puissent se contenter de WordPress qui est très loin d’être une merveille.
Et turbogears vous en pensez quoi ?
@Balisong: pyramid a remplacé turbogears.
super! merci pour les info!
en python pur, j’ai utilisé pelican (je ne sais plus si déjà commenté sur le blog), simple et plutôt efficace. Il est assez facile de faire des plugin simple dessus…
@Sam & Balisong: Euh, pour TurboGears, je ne crois pas qu’il soit remplacé par Pyramid. TurboGears est basé sur le framework Pylons, qui lui a été remplacé par Pyramid (et TG continue d’utiliser Pylons me semble-t-il). Mais de ce que j’avais compris, TurboGears se voulait un concurrent de Django en termes de fonctionnalités, ce qui n’est pas le but de Pyramid.
@Sam (ou @Max), un article sur Cyclone dans les tuyaux ? Première fois que vous en parlez et, outre le fait que ça me nique encore un nom pour un projet Twisted, j’ai du mal à voir ce qu’il apporte réellement (à part peut être une API plus clair pour Twisted).
@fero14041: effectivement j’ai dis une grosse connerie. Je ne vais donc pas donner mon avis sur turbogear puisque j’ai bien illustré que je n’ai pas l’expérience pour le faire.
@Zanguu: essentiellement pouvoir utiliser la simplicité de tornado pour la prog web, et la puissance de twisted pour le reste, dans un seul projet. Mais non, je ne compte pas faire d’article dessus pour le moment.
@Florient fiole est intéressant, mais à ce que j’ai vu il faut ajouter |e à chaque fois qu’on veut faire un escape. Outre que c’est un peu lourd, c’est si facile à oublier. j’ai soumis une issue github. https://github.com/florentx/fiole/issues/5 . Je suis bien conscient que ca ne résoudra pas tous les problèmes de sécurité, mais ce serait bien quand même.
@strompy: C’est qui que tu traites de développeurs perfectionnistes ?
http://sametmax.com/developper-un-projet-a-la-va-vite-vs-developper-un-projet-en-mode-pro-dev/
:p
Et Zope/ Plone bordel, je l’ai revė le Zope/Plone ?
Je souhaites que ce truc disparaisse de la surface de la terre, donc non, je ne vais pas en parler.
Je citerais Tim Berners-Lee (2013) : “Zope/Plone c’est bien mieux foutu que internet”
C’est sans doute pour ça que tout le monde utilise Zope Plone et personne n’utilise Internet.
Mais bon, j’ai commencé ma carrière sur Plone. Premier projet, j’ai travaillé avec un mec, un brute en Zope. Il m’a dit : “la courbe d’apprentissange, c’est pas une courbe, c’est un mur”. Il a passé un mois pour donné à un site Plone les perfs qu’on a out of the box avec un site Django.
Edit: zut, les balises troll ne passent pas. Rah, quand est-ce que vous abandonnez WordPress ? :p
Plone4 améliore grandement les perfs (jour VS nuit).
D’autre part, il se trouve que j’en ai un peu plein le cul de lui qd même.
Si quelqu’un voulait développer un éditeur collaboratif genre Etherpad mais en Python, il utiliserait quoi ? (maintenant, ou dans 2 ans)
Tornado ou autobahn. Ce dernier va faire l’objet d’un tuto prochainement.
Sur wordpress :
http://sametmax.com/pourquoi-sametmax-com-utilise-wordpress/
Merci pour cet article très intéressant pour moi qui vient du monde JS (Node) et PHP, d’après la liste que tu viens de fournir, il semblerait (sur le papier) que Tornado me convienne très bien. Je n’ai pas encore été regarder la documentation, mais dans l’esprit c’est un modèle non bloquant piloté par les évènements ? Si c’est le cas ça m’intéresse grandement !
J’en ris encore, concernant Twisted. À chaque fois que j’ai tenté un projet avec l’Api, je finissais avec plus de question que de réponse. Au final, j’utilisais socket,ftplib,ssl,paramiko,flask,django,thread,multiprocess,HttpServer …. bref tout sauf twisted
Bravo pour votre travail, en passant :)
Bonjour, est-ce toujours d’actualité? Certains projets ont du évoluer en bien ou en mal? Merci
Ca n’a pas bougé.
et, msieur max… et Karrigell ? pas un petit mot sur ce framework ?
karrigell4.3.9 avec python 3
https://pypi.python.org/pypi/Karrigell (pour que le monsieur n’est pas besoin de chercher longtemps)
Je n’ai jamais vu quelqu’un l’utiliser en prod donc je ne peux pas en parler.
bah… bah… bah… la prod c’est le top… mais le didactique!
python, karrigell, pyscripter, pour le newbie des bois qui tente une sortie dans le monde merveilleux du python volant…
@quetzal pyscripter quezako ? Le seul truc que j’ai trouvé sous ce nom c’est un truc en delphi non maintenu.
https://sourceforge.net/projects/pyscripter/?SetFreedomCookie
PyScripter un IDE opensource pour Python… non-maintenu il est vrai, enfin sauf pour les grandes occasion fonctionne très jusqu’a python3.4…
J’ai lu cet article car je suis un développeur java qui ne connait pas python et qui approuve les pratiques de Clean Coder d’Uncle Bob Martin Clean Coder qui dit en gros que les outils et frameworks ne sont pas la cle de “I want to get home early” mais c’ est la discipline des développeurs qui facilite leur vie. Mais en voyant cette profusion de framework en Python du coup j’hésite à l’apprendre. Si pour trouver un taf en python il faut connaître des frameworks qui bougent sans arrêt et qui nous rendent dépendants d’eux je préfère passer mon chemin. Est ce le cas?
Dans le Web Python, on ne fait rien sans framework. Personnellement j’ai appris Django il y a 7 ans et le framework a toujours la même tête. C’est très stable. Mais du coup on a pas les fonctionnalités dernier cris genre le temps réel.