Python a-t-il un système de gestion de paquets/modules?
est-ce que Python a un système de gestion de paquets/modules, similaire à comment Ruby a rubygems où vous pouvez faire gem install packagename
?
sur " installation de Modules Python , Je ne vois que des références à python setup.py install
, mais cela exige que vous trouviez le paquet en premier.
11 réponses
progrès récents
mars 2014 : bonne nouvelle! Python 3.4 livré avec le Pip. Pip est depuis longtemps le gestionnaire de paquets standard de Python. Vous pouvez installer "1519150920 un" paquet comme ceci:
pip install httpie
Wahey! C'est la meilleure caractéristique de toute version de Python. Elle rend la richesse des bibliothèques de la communauté accessible à tous. Les débutants ne sont plus exclus utiliser les bibliothèques de la communauté par la difficulté prohibitive de la configuration.
cependant , il reste un certain nombre de frustrations en suspens avec L'expérience d'empaquetage Python. Cumulativement, ils rendent Python très peu accueillant pour les débutants. En outre, la longue histoire de négligence (c.-à-d. ne pas envoyer 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.
en circulation frustrations
il est important de comprendre que bien que les utilisateurs expérimentés soient capables de contourner ces frustrations, ce sont des obstacles importants pour les personnes nouvelles en Python. En fait, la difficulté et l'inamovibilité générale de l'utilisateur sont susceptibles de dissuader beaucoup d'entre eux.
le site Web du PyPI est contre-utile
chaque langue avec un gestionnaire de paquets a un dépôt officiel (ou quasi-officiel) pour la communauté à télécharger et publier des packages. Python a L'Index des paquets Python, PyPI. https://pypi.python.org/pypi
comparons ses pages avec celles de RubyGems et Npm (the Node package manager).
- https://rubygems.org/gems/rails RubyGems page for the package
rails
- https://www.npmjs.org/package/express Npm page for the package
express
- https://pypi.python.org/pypi/simplejson / PyPI page for the package
simplejson
vous verrez les pages RubyGems et Npm toutes les deux commencer par une description d'une ligne du paquet, puis de grandes instructions conviviales comment l'installer.
pendant ce temps, malheur à n'importe quel utilisateur de Python malheureux qui navigue naïvement vers PyPI. Sur https://pypi.python.org/pypi/simplejson/ , ils ne trouveront pas de telles instructions utiles. Il y a cependant un grand lien Vert "Download". Il n'est pas déraisonnable de le suivre. Aha, ils sur! Leur navigateur télécharge un fichier .tar.gz
. De nombreux utilisateurs de Windows ne peuvent même pas l'ouvrir, mais s'ils persévèrent, ils peuvent éventuellement l'extraire, puis exécuter setup.py
et finalement avec L'aide de Google setup.py install
. Certains abandonneront et réinventeront la roue..
bien sûr, tout cela est faux. Le plus facile la façon d'installer un paquet est avec une commande Pip. Mais PyPI n'a même pas parlé de Pip. Au lieu de cela, il les a conduits sur une voie archaïque et fastidieuse.
Erreur: impossible de trouver vcvarsall.MTD
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.chauve-souris
pour résoudre ce problème est l'une des questions les plus populaires sur Stack Overflow: " erreur: Impossible de trouver vcvarsall.chauve-souris "
peu de gens réussissent.
pour comparaison, dans la même situation, Ruby imprime ce message, qui explique ce qui se passe et comment le corriger:
veuillez mettre à jour votre chemin pour inclure des outils de construction ou télécharger le DevKit à partir de http://rubyinstaller.org/downloads et suivez les instructions à http://github.com/oneclick/rubyinstaller/wiki/Development-Kit
Publication de packages est dur
Ruby et Nodejs sont équipés de gestionnaires de paquets complets, Gem (depuis 2007) et Npm (depuis 2011), et ont nourri des communautés de partage centrées autour de GitHub. Npm rend publishing packages aussi facile que les installer, il a déjà paquets 64k . RubyGems listes 72k paquets . L'index vénérable des paquets Python liste seulement 41k .
histoire
Voler dans le visage de son " piles " la devise, Python embarqué sans un gestionnaire de paquets jusqu'en 2014.
Jusqu'à Pip, la norme de facto était une commande easy_install
. C'était lamentablement inadéquat. L'a pas de commande pour désinstaller des paquets.
Pip a été une énorme amélioration. Il avait la plupart des caractéristiques de la gemme de Ruby. Malheureusement, Pip était--jusqu'à récemment -- ironiquement difficile à installer. En fait, le problème reste une question en haut de Python sur le débordement de la pile: " comment installer pip sur Windows? "
Le Python Package Index (PyPI) semble être la norme:
- à installer un paquet:
pip install MyProject
- à update un paquet
pip install --upgrade MyProject
- à fixer une version d'un colis
pip install MyProject==1.0
vous pouvez installer le gestionnaire de paquets comme suit:
curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py
easy_install pip
, les Références:
et juste pour donner un contraste, il y a aussi pip .
en tant que développeur et apprenant de Ruby et Perl-Python, je n'ai pas trouvé easy_install ou pip équivalent à RubyGems ou CPAN.
j'ai tendance à laisser mes systèmes de développement exécuter les dernières versions des modules au fur et à mesure que les développeurs les mettent à jour, et à geler mes systèmes de production aux versions prédéfinies. RubyGems et CPAN permettent de trouver facilement les modules en énumérant ce qui est disponible, puis de les installer et de les mettre à jour plus tard, individuellement ou en bloc si vous le souhaitez.
easy_install et pip facilitent l'installation D'un module une fois que je l'ai localisé grâce à une recherche par navigateur ou que je l'ai appris par d'autres moyens, mais ils ne me disent pas ce qui est disponible. Je peux nommer explicitement le module à mettre à jour, mais les applications ne me diront pas ce qui a été mis à jour et elles ne vont pas tout mettre à jour en masse si je veux.
ainsi, la fonctionnalité de base est là dans pip et easy_install mais il y a des traits manquants que je voudrais voir qui les rendraient plus convivial et plus facile à utiliser et sur le même pied que le CPAN et le RubyGems.
au moins fin 2014, Continuum Analytics' Anaconda distribution Python avec le gestionnaire de paquets conda devrait être considéré. Il résout la plupart des problèmes graves que les gens rencontrent avec Python en général (gestion des différentes versions de Python, mise à jour des versions de Python, gestion des paquets, environnements virtuels, compatibilité Windows/Mac) dans un téléchargement cohérent.
il vous permet de faire à peu près beaucoup tout ce que vous voulez avec Python sans avoir à changer le système. Ma prochaine solution préférée est pip + virtualenv, mais vous devez installer virtualenv dans votre système Python (et votre système Python peut ne pas être la version que vous voulez), ou construire à partir de la source . Anaconda fait tout ce processus, le clic d'un bouton, ainsi que l'ajout d'un tas d'autres fonctionnalités.
ça s'appelle des setuptools. Vous l'exécutez avec la commande" easy_install".
vous pouvez trouver le répertoire à http://pypi.python.org /
sur Windows Installer http://chocolatey.org / puis
choco install python
ouvrir une nouvelle cmd-fenêtre avec le chemin mis à jour. Suivant, faites
choco install pip
après cela vous pouvez
pip install pyside
pip install ipython
...
je ne vois pas soit MacPorts ou Homebrew mentionné dans d'autres réponses ici, mais depuis je ne vois mentionné ailleurs sur un Débordement de Pile pour les questions, je vais ajouter mes propres 0,02$US que beaucoup de gens semblent considérer MacPorts non seulement comme un gestionnaire de paquets pour les paquets en général (comme d'aujourd'hui, ils liste 16311 packages/ports, 2931 matching "python", mais seulement pour les Macs), mais aussi comme un décent (peut-être mieux) gestionnaire de paquets pour les paquets/modules Python:
Question
"...Quelle est la méthode utilisée par les développeurs Mac python pour gérer leurs modules?"
réponses
SciPy
je me demande encore s'il faut utiliser Macport moi-même, mais en ce moment je penche dans cette direction.
puisque personne n'a mentionné pipenv ici, je voudrais décrire mes vues pourquoi tout le monde devrait l'utiliser pour gérer les paquets python.
comme @ColonelPanic l'a mentionné, il y a plusieurs problèmes avec le Python Package Index et avec pip et virtualenv aussi.
Pipenv résout la plupart des les problèmes avec pip et fournit des fonctionnalités supplémentaires également.
Pipenv features
Pipenv est destiné à remplacer pip et virtualenv, ce qui signifie que pipenv créera automatiquement un environnement virtuel distinct pour chaque projet, évitant ainsi les conflits entre différentes versions de Python/paquets pour différents projets.
- permet des constructions vraiment déterministes, tout en spécifiant facilement seulement ce que vous voulez.
- génère et vérifie les hachages de fichiers pour les dépendances verrouillées.
- installe automatiquement les Pythons requis, si pyenv est disponible.
- trouve automatiquement votre maison de projet, récursivement, en recherchant un Pipfile.
- génère automatiquement un fichier PIP s'il n'en existe pas.
- crée automatiquement un virtualenv dans un emplacement standard.
- automatiquement ajoute/supprime des paquets à un Pipfile lorsqu'ils ne sont pas installés.
- charge automatiquement .les fichiers env, s'ils existent.
si vous avez travaillé sur des projets python auparavant, vous réaliseriez que ces fonctionnalités rendent la gestion des paquets beaucoup plus facile.
Autres Commandes
-
check
vérifie les vulnérabilités de sécurité et affirme que la PPE 508 exigences sont respectées par le courant environnement. ( qui je pense est une grande caractéristique surtout après cela - paquets malveillants sur PyPi ) -
graph
vous montrera un graphique de dépendances, de vos dépendances installées.
vous pouvez en savoir plus ici - Pipenv .
Installation
vous pouvez trouver la documentation d'installation ici
P.S.: si vous avez aimé travailler avec le paquet Python requêtes , vous seriez heureux de savoir que pipenv est par le même développeur Kenneth Reitz
"