[PYTHON] Qu'est-ce que pip et comment l'utilisez vous?

Qu'est-ce que pip?

pip est l'un des gestionnaires de paquets de python, d'autres incluent conda et pipenv. Dans la série python3, s'il s'agit de la version 3.4 ou ultérieure, pip sera installé en même temps que python est installé. Vous pouvez installer et gérer des packages qui ne sont pas inclus dans la bibliothèque Python standard.

Voyons comment utiliser pip dans un environnement virtuel

Vérifiez si vous pouvez utiliser pip:

$ pip --version
pip 10.0.1 from /Users/endroit/venv/lib/python3.7/site-packages/pip (python 3.7)

mise à jour pip

$ pip install --upgrade pip

Revérifier la version du pip

$ pip --version
pip 19.3.1 from /Users/endroit/venv/lib/python3.7/site-packages/pip (python 3.7)

Jetons un coup d'œil aux commandes qui peuvent être utilisées avec pip:

$ pip help

Usage:
  pip <command> [options]

Commands:
  install                     Install packages.
  download                    Download packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  check                       Verify installed packages have compatible dependencies.
  config                      Manage local and global configuration.
  search                      Search PyPI for packages.
  wheel                       Build wheels from your requirements.
  hash                        Compute hashes of package archives.
  completion                  A helper command used for command completion.
  debug                       Show information useful for debugging.
  help                        Show help for commands.

General Options:
  -h, --help                  Show help.
  --isolated                  Run pip in an isolated mode,
                              ignoring environment variables and
                              user configuration.
  -v, --verbose               Give more output. Option is
                              additive, and can be used up to 3
                              times.
  -V, --version               Show version and exit.
  -q, --quiet                 Give less output. Option is
                              additive, and can be used up to 3
                              times (corresponding to WARNING,
                              ERROR, and CRITICAL logging
                              levels).
  --log <path>                Path to a verbose appending log.
  --proxy <proxy>             Specify a proxy in the form
                              [user:passwd@]proxy.server:port.
  --retries <retries>         Maximum number of retries each
                              connection should attempt (default
                              5 times).
  --timeout <sec>             Set the socket timeout (default 15
                              seconds).
  --exists-action <action>    Default action when a path already
                              exists: (s)witch, (i)gnore, (w)ipe,
                              (b)ackup, (a)bort.
  --trusted-host <hostname>   Mark this host or host:port pair as
                              trusted, even though it does not
                              have valid or any HTTPS.
  --cert <path>               Path to alternate CA bundle.
  --client-cert <path>        Path to SSL client certificate, a
                              single file containing the private
                              key and the certificate in PEM
                              format.
  --cache-dir <dir>           Store the cache data in <dir>.
  --no-cache-dir              Disable the cache.
  --disable-pip-version-check
                              Don't periodically check PyPI to
                              determine whether a new version of
                              pip is available for download.
                              Implied with --no-index.
  --no-color                  Suppress colored output

Installez le package avec pip

La bibliothèque python standard est étendue, mais il existe d'autres frameworks, outils, bibliothèques, etc. python créés par des développeurs du monde entier dans l'index des packages Python (PyPI). ) Est publié. (Lire comme tarte à tarte, pas tarte à tarte.) Vérifiez les packages installés dans l'environnement actuel avec la liste pip (lorsque rien n'est encore installé):

$ pip list
Package    Version
---------- -------
pip        19.3.1
setuptools 39.0.1

Utilisez la commande pip install pour installer le package que vous souhaitez utiliser à partir de PyPI. Si vous souhaitez utiliser la bibliothèque de machine learning scicit-learn:

$ pip install scikit-learn
Collecting scikit-learn
  Downloading https://files.pythonhosted.org/packages/82/d9/69769d4f79f3b719cc1255f9bd2b6928c72f43e6f74084e3c67db86c4d2b/scikit_learn-0.22.1-cp37-cp37m-macosx_10_6_intel.whl (11.0MB)
     |████████████████████████████████| 11.0MB 851kB/s
Collecting scipy>=0.17.0
  Using cached https://files.pythonhosted.org/packages/85/7a/ae480be23b768910a9327c33517ced4623ba88dc035f9ce0206657c353a9/scipy-1.4.1-cp37-cp37m-macosx_10_6_intel.whl
Collecting joblib>=0.11
  Downloading https://files.pythonhosted.org/packages/28/5c/cf6a2b65a321c4a209efcdf64c2689efae2cb62661f8f6f4bb28547cf1bf/joblib-0.14.1-py2.py3-none-any.whl (294kB)
     |████████████████████████████████| 296kB 1.1MB/s
Collecting numpy>=1.11.0
  Using cached https://files.pythonhosted.org/packages/2f/5b/2cc2b9285e8b2ca8d2c1e4a2cbf1b12d70a2488ea78170de1909bca725f2/numpy-1.18.1-cp37-cp37m-macosx_10_9_x86_64.whl
Installing collected packages: numpy, scipy, joblib, scikit-learn
Successfully installed joblib-0.14.1 numpy-1.18.1 scikit-learn-0.22.1 scipy-1.4.1

Vérifiez les packages installés dans votre environnement actuel:

$ pip list
Package      Version
------------ -------
joblib       0.14.1
numpy        1.18.1
pip          19.3.1
scikit-learn 0.22.1
scipy        1.4.1
setuptools   39.0.1

Je viens d'installer scikit-learn, mais joblib, numpy et scipy sont installés en plus de scikit-learn. C'est parce que scikit-learn dépend d'autres paquets joblib, numpy et scipy. En d'autres termes, scicit-learn seul ne fonctionne pas, il a donc installé les autres packages requis ensemble.

Vous pouvez vérifier les informations de version et de dépendance du package installé avec la commande pip show:

$ pip show scikit-learn
Name: scikit-learn
Version: 0.22.1
Summary: A set of python modules for machine learning and data mining
Home-page: http://scikit-learn.org
Author: None
Author-email: None
License: new BSD
Location: /Users/endroit/venv/lib/python3.7/site-packages
Requires: scipy, joblib, numpy
Required-by:

Nécessite: scipy, joblib, numpy, pour que vous puissiez voir que scikit-learn dépend de scipy, joblib, numpy. Puisque Required-by: est vide, vous pouvez confirmer qu'aucun paquet ne dépend jusqu'à présent de scikit-learn.

Jetons également un coup d'œil au scipy installé avec:

$ pip show scipy
Name: scipy
Version: 1.4.1
Summary: SciPy: Scientific Library for Python
Home-page: https://www.scipy.org
Author: None
Author-email: None
License: BSD
Location: /Users/endroit/venv/lib/python3.7/site-packages
Requires: numpy
Required-by: scikit-learn

Vous pouvez voir que scipy a besoin de numpy et est nécessaire pour scikit-learn.

Étant donné que pip install installe toujours la dernière version disponible publiquement, vous devez spécifier la version lorsque vous souhaitez installer une version fixe d'un package. Par exemple, la dernière version de scikit-learn est la 0.22.1, mais si vous souhaitez installer la version 0.21.3:

$ pip install scikit-learn==0.21.3
Collecting scikit-learn==0.21.3
  Using cached https://files.pythonhosted.org/packages/e9/57/8a9889d49d0d77905af5a7524fb2b468d2ef5fc723684f51f5ca63efed0d/scikit_learn-0.21.3-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Requirement already satisfied: scipy>=0.17.0 in ./venv/lib/python3.7/site-packages (from scikit-learn==0.21.3) (1.4.1)
Requirement already satisfied: joblib>=0.11 in ./venv/lib/python3.7/site-packages (from scikit-learn==0.21.3) (0.14.1)
Requirement already satisfied: numpy>=1.11.0 in ./venv/lib/python3.7/site-packages (from scikit-learn==0.21.3) (1.18.1)
Installing collected packages: scikit-learn
  Found existing installation: scikit-learn 0.22.1
    Uninstalling scikit-learn-0.22.1:
      Successfully uninstalled scikit-learn-0.22.1
Successfully installed scikit-learn-0.21.3

Même si vous avez déjà installé scikit-learn-0.22.1, il le désinstallera d'abord, puis installera la version spécifiée. Quant à joblib, numpy et scipy, ils sont déjà installés et répondent aux exigences de scikit-learn-0.21.3, ils seront donc laissés tels quels.

Si vous souhaitez spécifier plusieurs versions de package à installer, vous pouvez les écrire ensemble dans requirements.txt (n'importe quel nom) et pip install.

$ cat requirements.txt
joblib==0.14.1
numpy==1.18.1
scikit-learn==0.21.3
scipy==1.4.1
$ pip install -r requirements.txt
Collecting joblib==0.14.1
  Using cached https://files.pythonhosted.org/packages/28/5c/cf6a2b65a321c4a209efcdf64c2689efae2cb62661f8f6f4bb28547cf1bf/joblib-0.14.1-py2.py3-none-any.whl
Collecting numpy==1.18.1
  Using cached https://files.pythonhosted.org/packages/2f/5b/2cc2b9285e8b2ca8d2c1e4a2cbf1b12d70a2488ea78170de1909bca725f2/numpy-1.18.1-cp37-cp37m-macosx_10_9_x86_64.whl
Collecting scikit-learn==0.21.3
  Using cached https://files.pythonhosted.org/packages/e9/57/8a9889d49d0d77905af5a7524fb2b468d2ef5fc723684f51f5ca63efed0d/scikit_learn-0.21.3-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Collecting scipy==1.4.1
  Using cached https://files.pythonhosted.org/packages/85/7a/ae480be23b768910a9327c33517ced4623ba88dc035f9ce0206657c353a9/scipy-1.4.1-cp37-cp37m-macosx_10_6_intel.whl
Installing collected packages: joblib, numpy, scipy, scikit-learn
Successfully installed joblib-0.14.1 numpy-1.18.1 scikit-learn-0.21.3 scipy-1.4.1

Si vous souhaitez dupliquer l'environnement actuel dans un autre projet, etc., vous pouvez écrire l'intégralité de l'environnement actuel dans un fichier avec la commande pip freeze:

$ pip freeze > requirements.txt
$ cat requirements.txt
joblib==0.14.1
numpy==1.18.1
scikit-learn==0.21.3
scipy==1.4.1

En plus de '==', vous pouvez ajouter des conditions telles que '<=' et '> ='. spécificateurs d'exigences Par exemple, si scikit-learn> = 0.21.3 est défini:

$ cat requirements.txt
joblib==0.14.1
numpy==1.18.1
scikit-learn>=0.21.3
scipy==1.4.1

Vérification de l'environnement actuel:

$ pip list
Package      Version
------------ -------
joblib       0.14.1
numpy        1.18.1
pip          19.3.1
scikit-learn 0.21.3
scipy        1.4.1
setuptools   39.0.1

Essayez pip install -r requirements.txt:

$ pip install -r requirements.txt
Requirement already satisfied: joblib==0.14.1 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 1)) (0.14.1)
Requirement already satisfied: numpy==1.18.1 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 2)) (1.18.1)
Requirement already satisfied: scikit-learn>=0.21.3 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 3)) (0.21.3)
Requirement already satisfied: scipy==1.4.1 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 4)) (1.4.1)

On dit que les conditions décrites dans requirements.txt sont remplies. Eh bien, scikit-learn 0.21.3 satisfait certainement scikit-learn> = 0.21.3. Lorsque vous souhaitez mettre à jour vers la dernière version qui remplit les conditions - mise à niveau:

$ pip install --upgrade -r requirements.txt
Requirement already up-to-date: joblib==0.14.1 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 1)) (0.14.1)
Requirement already up-to-date: numpy==1.18.1 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 2)) (1.18.1)
Collecting scikit-learn>=0.21.3
  Using cached https://files.pythonhosted.org/packages/82/d9/69769d4f79f3b719cc1255f9bd2b6928c72f43e6f74084e3c67db86c4d2b/scikit_learn-0.22.1-cp37-cp37m-macosx_10_6_intel.whl
Requirement already up-to-date: scipy==1.4.1 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 4)) (1.4.1)
Installing collected packages: scikit-learn
  Found existing installation: scikit-learn 0.21.3
    Uninstalling scikit-learn-0.21.3:
      Successfully uninstalled scikit-learn-0.21.3
Successfully installed scikit-learn-0.22.1

Vous pouvez également écrire le fichier des exigences dans le fichier des exigences:

$ cat requirements_old.txt
numpy==1.18.1
scipy==1.4.1
$ cat requirements_new.txt
-r requirements_old.txt
scikit-learn>=0.21.3
$ pip install -r requirements_new.txt
Collecting numpy==1.18.1
  Using cached https://files.pythonhosted.org/packages/2f/5b/2cc2b9285e8b2ca8d2c1e4a2cbf1b12d70a2488ea78170de1909bca725f2/numpy-1.18.1-cp37-cp37m-macosx_10_9_x86_64.whl
Collecting scipy==1.4.1
  Using cached https://files.pythonhosted.org/packages/85/7a/ae480be23b768910a9327c33517ced4623ba88dc035f9ce0206657c353a9/scipy-1.4.1-cp37-cp37m-macosx_10_6_intel.whl
Collecting scikit-learn>=0.21.3
  Using cached https://files.pythonhosted.org/packages/82/d9/69769d4f79f3b719cc1255f9bd2b6928c72f43e6f74084e3c67db86c4d2b/scikit_learn-0.22.1-cp37-cp37m-macosx_10_6_intel.whl
Collecting joblib>=0.11
  Using cached https://files.pythonhosted.org/packages/28/5c/cf6a2b65a321c4a209efcdf64c2689efae2cb62661f8f6f4bb28547cf1bf/joblib-0.14.1-py2.py3-none-any.whl
Installing collected packages: numpy, scipy, joblib, scikit-learn
Successfully installed joblib-0.14.1 numpy-1.18.1 scikit-learn-0.22.1 scipy-1.4.1
$ pip list
Package      Version
------------ -------
joblib       0.14.1
numpy        1.18.1
pip          19.3.1
scikit-learn 0.22.1
scipy        1.4.1
setuptools   39.0.1

Comment trouver un colis

Vous pouvez rechercher des packages publiés sur PyPI avec la recherche pip. Par exemple, recherchez Qiita:

$ pip search qiita
qiita (0.1.1)              - Qiita api wrapper for Python
qiita-spots (0.2.0)        - Qiita: Spot Patterns
qiita_v2 (0.2.1)           - Python Wrapper for Qiita API v2
qiitacli (1.1.0)           - CLI Application for Qiita API v2
qiitap (1.3.1)             - Add include function to Qiita
                             Markdown
qiita_api_wrapper (0.1.0)  - Qiita API V2 wrapper for Python
qiidly (1.0.0)             - Sync Qiita feeds for followees and
                             following tags to Feedly. -> Qiita&#
                             12391;&#12501;&#12457;&#12525;&#1254
                             0;&#20013;&#12398;&#12479;&#12464;&#
                             12392;&#12518;&#12540;&#12470;&#1254
                             0;&#12434;Feedly&#12395;&#21516;&#26
                             399;&#12290;

Cependant, cette méthode ne vous donne pas les détails du paquet, donc la plupart du temps vous effectuerez une recherche sur le site Web PyPI.

Désinstaller le package avec pip

Vérification de l'environnement actuel:

$ pip list
Package      Version
------------ -------
joblib       0.14.1
numpy        1.18.1
pip          19.3.1
scikit-learn 0.22.1
scipy        1.4.1
setuptools   39.0.1

Avant de désinstaller le package, vérifiez avec pip show qu'il n'y a pas d'autres packages qui nécessitent ce package avant la désinstallation de pip. Si vous n'avez plus besoin de scikit-learn:

$ pip show scikit-learn
Name: scikit-learn
Version: 0.22.1
Summary: A set of python modules for machine learning and data mining
Home-page: http://scikit-learn.org
Author: None
Author-email: None
License: new BSD
Location: /Users/endroit/venv/lib/python3.7/site-packages
Requires: joblib, scipy, numpy
Required-by:
$ pip uninstall scikit-learn
Uninstalling scikit-learn-0.22.1:
  Would remove:
    /Users/endroit/venv/lib/python3.7/site-packages/scikit_learn-0.22.1.dist-info/*
    /Users/endroit/venv/lib/python3.7/site-packages/sklearn/*
Proceed (y/n)? y
  Successfully uninstalled scikit-learn-0.22.1
$ pip list
Package    Version
---------- -------
joblib     0.14.1
numpy      1.18.1
pip        19.3.1
scipy      1.4.1
setuptools 39.0.1

Quand j'ai installé scikit-learn, j'ai eu joblib, numpy et scipy, mais quand je le désinstalle, je peux les garder! b_1.jpg Picture1.jpg Typique

Vous pouvez ignorer la confirmation avec -y:

$ pip uninstall joblib -y
$ pip uninstall scipy -y
$ pip uninstall numpy -y

Désinstallations multiples:

$ pip uninstall -y joblib scipy numpy

Désinstaller en spécifiant dans le fichier des exigences:

pip uninstall -r requirements.txt -y

Vérifiez si les dépendances sont respectées

La commande pip check vérifiera les dépendances entre les packages installés. scipy et scikit-learn dépendent de numpy, mais sans numpy:

$ pip list
Package      Version
------------ -------
joblib       0.14.1
pip          19.3.1
scikit-learn 0.22.1
scipy        1.4.1
setuptools   39.0.1
$ pip check
scipy 1.4.1 requires numpy, which is not installed.
scikit-learn 0.22.1 requires numpy, which is not installed.

Cela me dit qu'il n'y a pas de numpy.

référence

What Is Pip? A Guide for New Pythonistas

Recommended Posts

Qu'est-ce que pip et comment l'utilisez vous?
[Python] Qu'est-ce que pip? Expliquez la liste des commandes et comment l'utiliser avec des exemples réels
La programmation parallèle est-elle difficile, et si oui, que pouvez-vous y faire?
Comment installer et utiliser pyenv, que faire si vous ne pouvez pas changer de version de Python
[Pandas] Qu'est-ce que set_option [Comment utiliser]
[Python] Qu'est-ce qu'un tuple? Explique comment utiliser sans toucher et comment l'utiliser avec des exemples.
Comment utiliser is et == en Python
Quelle est la différence entre «pip» et «conda»?
Que comparez-vous avec Python et ==?
Comment installer le détecteur Cascade et comment l'utiliser
Si vous essayez d'installer Python2 pip après avoir installé Python3 pip et qu'il est rejeté
Que faire si vous ne pouvez pas installer mysqlclient
% Et str.format () en Python. Lequel utilisez-vous?
[Python] Comment utilisez-vous les expressions lambda? ?? [Gribouillis] [Suite-1]
Ce que vous pouvez et ne pouvez pas faire avec Tensorflow 2.x
Installez tweepy avec pip et utilisez-le pour l'API 1.1
[Python] Python et sécurité-① Qu'est-ce que Python?
Comment collectez-vous les informations?
[AWS] Que faire lorsque vous souhaitez piper avec Lambda
Que faire si vous ne pouvez pas utiliser le WiFi sous Linux
Pourquoi l'importation de django-import-export est si lente et que faire
Que faire si vous obtenez une erreur non définie lorsque vous essayez d'utiliser pip avec pyenv
Que faire si vous chattez ou suivez un fichier binaire et que le terminal est brouillé
[Python] Qu'est-ce qu'une tranche? Une explication facile à comprendre de son utilisation avec un exemple concret
Que faire si vous ne pouvez pas installer pyaudio avec pip #Python
Comment donner et signifier l'option des contraintes dans scipy.optimize.minimize
Quand il est difficile de copier ce que vous avez construit avec vue
Que faire lorsque vous obtenez des correspondances de fichier binaire (entrée standard) après la greffe d'un fichier texte
Que faire si vous obtenez une erreur de décodage Unicode avec l'installation de pip
Comment utiliser .bash_profile et .bashrc
Comment installer et utiliser Graphviz
Tu ne le sais pas? commande pip
Introduction à l'utilisation de Pytorch Lightning ~ Jusqu'à ce que vous formatez votre propre modèle et le produisez sur tensorboard ~
Que faire si vous ne pouvez pas utiliser la poubelle dans Lubuntu 18.04.
NameError: le nom global'dot_parser 'n'est pas défini et que faire quand il apparaît en python
Python | Ce que vous pouvez faire avec Python
Que faire si vous ne pouvez pas utiliser la recherche de grille de sklearn en Python
Lorsque vous souhaitez l'utiliser tel quel lorsque vous l'utilisez avec lambda memo
Que faire si vous ne pouvez pas installer avec pip dans l'environnement babun
Que faire si vous obtenez Impossible de récupérer l'URL 443 avec pip
Que faire lorsqu'un message d'avertissement est affiché dans la liste des pip
[Python] Qu'est-ce que la série pandas et DataFrame?
Que dites-vous en gros "sudo su"?
Comment installer et utiliser pandas_datareader [Python]
Ce que vous pouvez faire avec l'API vol.1
Analyse des données, que faites-vous après tout?
Que faire si vous obtenez l'erreur RuntimeError: Python n'est pas installé en tant que framework lorsque vous essayez d'utiliser matplitlib et pylab dans Python 3.3
python: Comment utiliser les locals () et globals ()
Le jour 64 de l'installation de pip tensorflow 2.0 est arrivé.
Comment utiliser le zip Python et énumérer
Ce que vous pouvez faire avec des compétences en programmation
Résumons ce que vous voulez faire.
Comment utiliser les pandas Timestamp et date_range
Il est pratique d'utiliser stac_info et exc_info lorsque vous souhaitez afficher la traceback dans la sortie du journal par journalisation.
Conseils pour ceux qui ne savent pas comment utiliser is et == en Python
Comprenez-vous correctement l'intervalle de confiance? Quelle est la différence avec la section sur les condamnations?
[EC2] Que faire lorsque le sélénium est bloqué et que le traitement ne se poursuit pas
Qu'est-ce que vous aimez dans la conversion d'un tableau (liste) en chaîne?
[Introduction aux statistiques] Quel type de distribution est la distribution t, la distribution chi carré et la distribution F? Un petit résumé de l'utilisation de [python]