À bien des égards, ces deux outils sont très semblables.
Les deux ont une bonne documentation, s’intègrent facilement aux IDE, ont une interface claire et pratique, et font des tonnes de trucs que je ne peux pas détailler ici.
Alors pourquoi deux ?
D’abord, pipenv a un périmètre restreint au développement d’applications, alors que poetry peut aussi servir à développer des libraries. En effet, poetry possède en plus des commandes pour empaqueter et publier son projet.
Même plus besoin de faire son setup.py.
Ensuite, le développement de pipenv, qui avait démarré sur les chapeaux de roues, a été bloqué par des conflits pendant un bon moment, gelant les bugs et les retours d’utilisateurs. Ce qui a motivé l’auteur de poetry, et lui a permis d’orienter différemment l’interface et de faire l’empaquetage.
Au final, pour une application, autant prendre celui dont on préfère l’interface.
Bonus
Les venv permettent d’isoler les projets en développement les uns des autres, mais qu’est-ce qui se passe pour les outils Python installés avec pip ? pew, pipenv et poetry par exemple, on ne peut pas les mettre dans un venv puisqu’ils servent à les gérer ! Et si je veux tester pew et pipenv, mais que pipenv utilise pew comme
dépendance, il n’y pas un risque de conflit ?
Évidemment il y a une solution : pipx. En effet, pipx installe les applications comme pip tout en les encapsulant dans des environnements virtuels. À l’usage, la différence avec pip est seulement un petit ‘x’, mais ça garantit que les applications installées au niveau du système sont isolées.
Par Jonathan Gaffiot