[PYTHON] À propos de la gestion des packages avec conda et pip

En un mot, Anaconda est livré avec une bibliothèque de calculs scientifiques en plus du Python lui-même depuis le début. Il a également été conçu pour simplifier la gestion et le déploiement des packages et est livré avec une commande de gestion des packages appelée conda.

À propos de conda et pip

Dans le monde de Python, un outil de gestion de paquets s'est attaché à lui-même depuis longtemps, et dans le passé j'ai utilisé quelque chose appelé EasyInstall, et pour utiliser pip plus tard J'ai dû le mettre en place. C'était gênant un par un. C'est le meilleur moment pour avoir des pips par défaut en Python ces jours-ci. Avec cette commande, vous pouvez installer le package publié sur le site appelé PyPI via Internet avec la commande. C'est le meilleur moment.

À propos, une histoire commune est le discours qui «rompt» lorsque conda et pip sont utilisés ensemble. Je ne suis pas sûr de ce qu'il prétend casser, mais il est inhabituel de le mettre dans le même emballage avec conda ou pip en premier lieu. Ce n'est pas le système de gestion des paquets qui est cassé, mais plutôt votre tête qui essaie de faire quelque chose d'incohérent.

Ne vous méprenez pas, Anaconda place le package en tapant la commande conda de base, mais vous pouvez également utiliser pip. L'ancien conda est entré à partir du référentiel Anaconda. Ce dernier pip provient de PyPI. Bien sûr, ce dernier a plus de packages. De plus, PyPI n'a pas de révision, donc n'importe qui peut être auteur de paquet. À l'extrême, même si vous écrivez un code source étrange et le publiez sur PyPI, personne ne l'a vérifié. Si vous empaquetez le code source que vous utilisez uniquement pour votre projet et le mettez dans PyPI, personne ne vous le dira.

D'autre part, le référentiel d'Anaconda est géré par la société, donc je pense que je le vérifie tel quel, mais je ne suis pas une personne à l'intérieur, donc je ne vais pas garantir "Je vérifie!".

Il existe également un référentiel géré par la communauté appelé conda-forge, que vous pouvez également entrer avec conda. Mais au moment de l'utiliser, il semble que ce soit un produit de la communauté après tout.

Pour le dire franchement, les dépendances entre les packages dépendent de la commodité de l'auteur, donc personne ne regarde tout le monde Python et n'examine rigoureusement ces relations. Cela dépend de vous qui l'utilisez.

Ce genre de discussion existe depuis longtemps non seulement en Python mais aussi dans le système de gestion de paquets de Ruby, par exemple, et après tout, tout le monde crée des paquets comme il l'entend, donc Freedom. L'open source est une telle chose. Je pense que l'atmosphère est telle que l'utilisateur doit le vérifier.

Je pense personnellement que seule la version stable de Debian vérifie minutieusement les dépendances entre les paquets et en maintient la qualité.

Affichage des informations de dépendance avec pip

Comme le responsable et l'auteur du package le savent, lors de l'enregistrement auprès de PyPI, écrivez diverses méta-informations dans le fichier de distribution du package.

Ainsi, comment vérifier les informations de dépendance peut être affiché avec la commande suivante.

pip install pipdeptree #Entrez avec pip
pipdeptree -p <nom du paquet>

Par exemple, voici quelques exemples de packages appelés pandas pour chaque version.

pandas==0.16.2
  - numpy [required: >=1.7.0, installed: 1.11.2]
  - python-dateutil [required: >=2, installed: 2.6.0]
    - six [required: >=1.5, installed: 1.10.0]
  - pytz [required: >=2011k, installed: 2016.7]

pandas==0.22.0
  - numpy [required: >=1.9.0, installed: 1.13.3]
  - python-dateutil [required: >=2, installed: 2.6.1]
  - six [required: >=1.5, installed: 1.11.0]
  - pytz [required: >=2011k, installed: 2017.2]

Cela vous donnera une idée de quel package dépend de quelle version de quel package.

Affichage des packages en double dans conda et pip

Un cas courant est que vous le gérez avec conda, mais que vous le mettez accidentellement avec pip. Ainsi, les paquets en double peuvent être visualisés avec le one-liner ci-dessous.

conda list | cut -d ' ' -f 1 | sort | uniq -d

C'est une bonne idée de vérifier de temps en temps pour s'assurer qu'il n'y a pas de doublons.

Résumé

C'est pourquoi il est devenu plus long, mais en résumé

-La gestion des paquets d'Anaconda est fournie avec les commandes conda et pip. -En gros, utilisez conda pour faire référence au référentiel Anaconda. ・ Utilisez pip pour saisir des éléments qui ne sont pas en conda -Vérifiez occasionnellement les doublons, et s'il y a des doublons, donnez la priorité à conda.

Vous pouvez créer l'environnement cible en vous référant à ceux-ci.

Je pense que ça ressemble à ça. J'accepte toutes les objections, donc j'apprécierais vos opinions. C'est dur, mais c'est tout.

Recommended Posts

À propos de la gestion des packages avec conda et pip
Installation de Python et gestion des packages avec pip
Remarques sur la gestion des packages avec conda
[Gestion des packages] Destination d'installation et traitement interne d'apt et de pip
Installez Python 2.7.9 et Python 3.4.x avec pip.
À propos de pip
À propos de _ et __
Mettre à jour le package avec les fonctionnalités standard de pip uniquement
Gestion des paquets dans Maya - essayez de mettre pip dans mayapy
Installation de l'outil de gestion des packages Python pip (Windows)
Je ne peux pas installer le package avec pip.
Que diriez-vous de créer un environnement virtuel avec Anaconda et de faire une installation pip?
Quelle est la différence entre «pip» et «conda»?
Remarques sur avec
mod_wsgi parle de le mettre avec pip
Installez pip et pandas avec Ubuntu ou VScode
conda contre pip
pip vs conda
Premiers pas avec python3 # 2 En savoir plus sur les types et les variables
Facilitons un peu la gestion des dépendances avec pip
Démarrer le calcul numérique avec Python (avec Homebrew et pip)
Traitement de pip et des erreurs d'installation associées sur Ubuntu 18.04
Installez tweepy avec pip et utilisez-le pour l'API 1.1
À propos de la classe et de l'instance
Installation PIL avec pip
[Python] pip et roue
Installation de packages avec pip3
Erreur avec l'installation de pip
À propos de cumprod et cummax
Utiliser pip avec MSYS2
Gestion de routine avec calendrier
À propos de la validation croisée et de la valeur F
Avec et sans WSGI
Remarque sur la gestion des packages Anaconda
Installez scikit.learn avec pip
À propos de «Lamvery», un outil de déploiement et de gestion pour AWS Lambda
Créez facilement des systèmes d'authentification, de gestion des utilisateurs et multilingues avec Flask-AppBuilder
Vous ne trouvez pas le package que vous avez installé avec pip install --user?
J'ai essayé la gestion du suivi avec l'API Twitter et Python (facile)
Étapes pour installer un package cloné Git localement avec pip
Déplacez ce que vous avez installé avec pip dans l'environnement conda
Une histoire sur l'installation de matplotlib à l'aide de pip avec une erreur
Package d'exécution Python et bibliothèque pypi avec chef / omnibus et Docker