Notes sur les frameworks Python

Il y a quelques semaines s’est tenue à Montréal un Hackathon Google, et j’ai eu envie d’explorer l’univers Python…

Voici quelques notes sur mes recherches sur Pythons et les différents frameworks Python. Étant familier avec le framework PHP symfony (bientôt la version Symfony2!!), quelques termes ne sont pas issue de l' »univers Python », mais plutôt de symfony (ou PHP).

Disclaimer: Je n’ai pas encore essayé tous les frameworks ou librairies cités dans cet article, mes remarques et notes sont donc basées essentiellement sur des lectures. La prochaine étape logique va être de monter une preuve de concept avec l’un de ces frameworks (probablement lui?).

Remarques générales sur l' »univers Python »

La totalité de la documentation que j’ai consulté est excellente! Vraiment impressionnant! (un gros merci à Sphinx j’imagine… Même l’univers PHP commence à l’utiliser (), mais c’est une autre histoire))

Les tests unitaires sont de plus en plus adoptés, quelque soit le language, mais avec Python, c’est systématique…

Aussi, les librairies sont bien découplées (c’est le principe d’une librairie me direz vous…), et normalement facilement interchangeable: beaucoup de framework offre un choix d’ORM ou de template engines, ou de méthodes de « routing »…

J’ai trouvé qu’il y avait beaucoup de « template engines » de disponible en Python… Bien ou mal? Bien pour la communauté, moins bien pour l’entreprise qui veut adopter des standards.

Ah si, une chose négative quand même: pas d’attributs ou de méthodes privés dans les classes… Et pas de « new » pour créer une classe: il va falloir s’habituer si je veux aller plus loin…

Django

Le framework qui popularisa Python sur le web (après Zope peut-être… C’est en tout cas mon impression). Ça semble bon, avec beaucoup de fonctionnalités incluses, et « assez monolitique » (à nuancer … cf. mon commentaire plus haut).

Plus

  • Scaffolding (admin-generator) flexible, configurable
  • Beaucoup de fonctionnalités déjà incluses
  • beaucoup de plugins
  • Très grande communauté
  • Très bonne documentation

Moins

  • ActiveRecord: même si on peut utiliser l’ORM de son choix, on perd tout le scaffolding (d’après mes recherches)
  • Trop de features (?) = plus lent?

Pyramid

Le petit frère de repoze.bfg (et un peu de Pylons?).

Plus

  • Plusieurs options d’ORM ou de « routing » (qu’on peut mixer)
  • Possibilité d’utiliser SQLAlchemy ,que j’aime beaucoup
  • Le type de routing « Traversal »: si un attribut est Iterable, alors on peut avoir des urls automatiques, du genre: /category/products/prod-1

Moins

  • Mmm, … Pas vraiment de points négatif, il faudrait voir à l’usage…

Flask

J’ai beaucoup aimé l’aspect microframework, et « boite à outils » de Flask. Ah, et comment flask est né, à partir d’un « april fool », c’est bon…

L’idée de base: faire un framework léger, à partir de 2 librairies Python « solides »:

  • Jinja2, un template engine qui semble être populaire
  • werkzeug, une boite à outils pour les applications WSGI

Plus

  • Micro, donc (plus) rapide (que les autres)?
  • Boite à outils, des plugins bien « wrappés »

Moins

  • Liste de plugins limités…mais ce ne semble pas être vraiment un point négatif, c’est plutôt le principe même des microframeworks: utiliser n’importe quelle librairies.
  • Mmm, … Pas vraiment de points négatif donc, il faudrait voir à l’usage…
  • Ah si, il y a ce point: les règles de routage ne sont pas groupé, et pour de grosses applications, ça peut vite être difficile de s’y retrouver (mais peut-être que je suis dans le champ, et qu’il est super-simple de faire ça en Python…)

Conclusion

La liste des frameworks Python est longue, très longue…

Oui, et bien, lire c’est bien, mais utiliser c’est mieux. Je vais voir si d’autres frameworks ressortent du lot (mes recherches ne sont pas fini), mais là là, j’essayerais bien Flask. Histoire à suivre donc…

Liens utiles

Quelques liens qui m’ont aidé lors de ma recherche:

  • site du framework Django
  • The Great Web Framework Shootout: des benchmarks sur plusieurs framework. On peut toujours critiquer les bencharks, mais certains chiffres ne mentent pas…
  • Listes des frameworks Python
  • SQLAlchemy est un ORM qui a l’air très intéressant, et ce n’est PAS du Active Record Pattern, mais du Data Mapper, que je pense meilleur), et …
  • formAlchemy a l’air bon aussi, pour permettre de faire du scaffolding rapidement avec SQLAlchemy (je trouve le scaffolding utile pour le développement itératif…)
  • http://www.pocoo.org/ est une communauté Python qui fait de beaux projets, comme Jinja2: un template engine « en vogue » vraiment bon , Flask (voir plus haut), et d’autres bonne choses dont on peut abuser.
  • Performances des serveurs Python: http://nichol.as/benchmark-of-python-web-servers
  • Quelques remarques de la communauté ici, ici

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *