Progrès récents
Mars 2014 : Bonne nouvelle! Python 3.4 est livré avec Pip. Pip est depuis longtemps le gestionnaire de paquets standard de Python. Vous pouvez installer un package comme celui-ci:
pip install httpie
Wahey! C'est la meilleure fonctionnalité de toute version de Python. Cela rend la richesse des bibliothèques de la communauté accessible à tous. Les débutants ne sont plus exclus de l'utilisation des bibliothèques communautaires en raison de la difficulté prohibitive de la configuration.
Cependant , il reste un certain nombre de frustrations exceptionnelles avec l'expérience d'empaquetage Python. Cumulativement, ils rendent Python très peu accueillant pour les débutants. De plus, la longue histoire de négligence (c.-à-d. Ne pas être expédiée avec un gestionnaire de paquets pendant 14 ans de Python 2.0 à Python 3.3) a causé des dommages à la communauté. Je décris les deux ci-dessous.
Des frustrations exceptionnelles
Il est important de comprendre que si les utilisateurs expérimentés sont capables de contourner ces frustrations, ils constituent des obstacles importants pour les nouveaux utilisateurs de Python. En fait, la difficulté et la non-convivialité générale en dissuaderont probablement beaucoup.
Le site Web de PyPI est contre-utile
Chaque langue avec un gestionnaire de packages a un référentiel officiel (ou quasi-officiel) pour que la communauté télécharge et publie des packages. Python a l'index de package Python, PyPI. https://pypi.python.org/pypi
Comparons ses pages avec celles de RubyGems et Npm (le gestionnaire de paquets Node).
- https://rubygems.org/gems/rails Page RubyGems pour le package
rails
- https://www.npmjs.org/package/express Page Npm pour le package
express
- https://pypi.python.org/pypi/simplejson/ Page PyPI pour le package
simplejson
Vous verrez que les pages RubyGems et Npm commencent toutes les deux par une description en une ligne du package, puis de grandes instructions conviviales pour l'installer.
En attendant, malheur à tout utilisateur malheureux de Python qui navigue naïvement vers PyPI. Sur https://pypi.python.org/pypi/simplejson/ , ils ne trouveront pas d'instructions utiles. Il existe cependant un grand lien vert «Télécharger». Il n'est pas déraisonnable de le suivre. Aha, ils cliquent! Leur navigateur télécharge un .tar.gz
fichier. De nombreux utilisateurs de Windows ne peuvent même pas l'ouvrir, mais s'ils persévèrent, ils peuvent éventuellement l'extraire, puis l'exécuter setup.py
et éventuellement avec l'aide de Google setup.py install
. Certains abandonneront et réinventeront la roue.
Bien sûr, tout cela est faux. Le moyen le plus simple d'installer un package est d'utiliser une commande Pip. Mais PyPI n'a même pas mentionné Pip. Au lieu de cela, cela les a conduits sur un chemin archaïque et fastidieux.
Erreur: impossible de trouver vcvarsall.bat
Numpy est l'une des bibliothèques les plus populaires de Python. Essayez de l'installer avec Pip, vous obtenez ce message d'erreur cryptique:
Erreur: impossible de trouver vcvarsall.bat
Essayer de résoudre ce problème est l'une des questions les plus courantes sur Stack Overflow: " erreur: impossible de trouver vcvarsall.bat "
Peu de gens réussissent.
A titre de comparaison, dans la même situation, Ruby imprime ce message, qui explique ce qui se passe et comment y remédier:
Veuillez mettre à jour votre PATH pour inclure les outils de construction ou télécharger le DevKit à partir de http://rubyinstaller.org/downloads et suivre les instructions à http://github.com/oneclick/rubyinstaller/wiki/Development-Kit
La publication de packages est difficile
Ruby et Nodejs sont livrés avec des gestionnaires de packages complets, Gem (depuis 2007) et Npm (depuis 2011), et ont nourri des communautés de partage centrées autour de GitHub. Npm rend la publication de packages aussi simple que de les installer, il contient déjà 64k packages . RubyGems répertorie 72k packages . Le vénérable index des packages Python ne répertorie que 41k .
L'histoire
Faisant fi de sa devise « batteries incluses », Python a été livré sans gestionnaire de colis jusqu'en 2014.
Jusqu'à Pip, la norme de facto était une commande easy_install
. C'était terriblement insuffisant. Il n'y avait aucune commande pour désinstaller les packages.
Pip était une énorme amélioration. Il avait la plupart des caractéristiques de Ruby's Gem. Malheureusement, Pip était - jusqu'à récemment - ironiquement difficile à installer. En fait, le problème reste une des principales questions Python sur Stack Overflow: " Comment installer pip sur Windows? "