Python pip

Что такое pip?

pip — это стандартный менеджер пакетов для Python. Мы можем использовать pip для установки дополнительных пакетов, которые недоступны в стандартной библиотеке Python. Например,

pip install numpy

Если бы у нас был установлен pip, эта команда установила бы библиотеку numpy.


Как установить pip?

pip предустановлен в Python версии 3.4 или более старших. Мы можем проверить, установлен ли pip, с помощью следующей команды в консоли:

pip --version

Если pip уже доступен в системе, отображается версия pip, например:

pip 19.3.1 from C:\Python37\lib\site-packages\pip (python 3.7)

Если вы используете старую версию Python или по какой-то другой причине у вас не установлен pip, следуйте инструкциям по этой ссылке: установка pip


Использование pip

pip — это программа командной строки. После её установки добавляется команда pip, которую можно использовать в командной строке.

Базовый синтаксис pip:

pip <pip arguments>

Установка пакетов с помощью pip

Помимо стандартной библиотеки Python, сообщество Python вносит вклад в обширное количество пакетов, адаптированных для различных фреймворков разработки, инструментов и библиотек.

Большинство этих пакетов официально размещены и опубликованы в Python Package Index (PyPI). pip позволяет нам загружать и устанавливать эти пакеты.

Базовая установка пакета

Команда install используется для установки пакетов с помощью pip. Рассмотрим пример.

Предположим, мы хотим установить requests — популярную HTTP-библиотеку для Python. Мы можем сделать это с помощью следующей команды.

pip install requests

Вывод

Collecting requests
  Using cached https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2
  Using cached https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
  Using cached https://files.pythonhosted.org/packages/b4/40/a9837291310ee1ccc242ceb6ebfd9eb21539649f193a7c8c86ba15b98539/urllib3-1.25.7-py2.py3-none-any.whl
Collecting idna<2.9,>=2.5
  Using cached https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl
Collecting certifi>=2017.4.17
  Downloading https://files.pythonhosted.org/packages/b9/63/df50cac98ea0d5b006c55a399c3bf1db9da7b5a24de7890bc9cfd5dd9e99/certifi-2019.11.28-py2.py3-none-any.whl (156kB)
Installing collected packages: chardet, urllib3, idna, certifi, requests
Successfully installed certifi-2019.11.28 chardet-3.0.4 idna-2.8 requests-2.22.0 urllib3-1.25.7

Здесь видно, что pip был использован с командой install, за которой следует имя пакета, который мы хотим установить (requests).

Все остальные зависимости, такие как chardet, urllib3 и certifi, необходимые для этого пакета, также устанавливаются с помощью pip.

Указание версии пакета

Когда pip install используется в минимальной форме, pip загружает самую последнюю версию пакета.

Иногда только конкретная версия совместима с другими программами. Поэтому мы можем определить версию пакета следующим образом:

pip install requests==2.21.0

Здесь мы установили версию 2.11.0 библиотеки requests.


Просмотр установленных пакетов с помощью pip

Команда pip list может использоваться для вывода списка всех доступных пакетов в текущей среде Python.

pip list

Вывод

Package    Version
---------- ----------
certifi    2019.11.28
chardet    3.0.4
idna       2.8
pip        19.3.1
requests   2.22.0
setuptools 45.0.0
urllib3    1.25.7
wheel      0.33.6

Информация о пакете с pip show

Команда pip show отображает информацию об одном или нескольких установленных пакетах. Рассмотрим пример:

pip show requests

Вывод

Name: requests
Version: 2.22.0
Summary: Python HTTP for Humans.
Home-page: http://python-requests.org
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache 2.0
Location: c:\users\dell\desktop\venv\lib\site-packages
Requires: certifi, chardet, urllib3, idna
Required-by:

Здесь команда show отображает информацию о библиотеке requests. Обратите внимание на столбцы Requires и Required-by в приведённом выше выводе.

Столбец Requires показывает, какие зависимости требуются библиотеке requests. А столбец Required-by показывает пакеты, которым требуется requests.


Удаление пакета с помощью pip

Мы можем удалить пакет, используя pip с командой pip uninstall.

Предположим, мы хотим удалить библиотеку requests из нашей текущей среды Python. Сделать это можно следующим образом:

pip uninstall requests

Вывод

Uninstalling requests-2.22.0:
  Would remove:
    C:\Python37\lib\site-packages\requests-2.22.0.dist-info\*
    C:\Python37\lib\site-packages\requests\*
Proceed (y/n)? y
  Successfully uninstalled requests-2.22.0

Как видим, пакет requests удаляется после финального запроса.

Примечание

Несмотря на то что указанный пакет удалён, пакеты, которые были установлены как зависимости, не удаляются. В этом случае зависимости (chardet, urllib3 и certifi) библиотеки requests не удаляются.

Если нам нужно удалить и зависимости пакета, мы можем использовать команду pip show для просмотра установленных пакетов и удалять их вручную.


Использование файлов с требованиями

Файл, содержащий все имена пакетов, также может использоваться для пакетной установки пакетов Python.

Рассмотрим пример.

Предположим, у нас есть файл requirements.txt со следующими записями:

numpy
Pillow
pygame

Мы можем установить все эти пакеты и их зависимости одной командой в pip.

pip install -r requirements.txt

Вывод

Collecting numpy
  Using cached https://files.pythonhosted.org/packages/a9/38/f6d6d8635d496d6b4ed5d8ca4b9f193d0edc59999c3a63779cbc38aa650f/numpy-1.18.1-cp37-cp37m-win_amd64.whl
Collecting Pillow
  Using cached https://files.pythonhosted.org/packages/88/6b/66f502b5ea615f69433ae1e23ec786b2cdadbe41a5cfb1e1fabb4f9c6ce9/Pillow-7.0.0-cp37-cp37m-win_amd64.whl
Collecting pygame
  Using cached https://files.pythonhosted.org/packages/ed/56/b63ab3724acff69f4080e54c4bc5f55d1fbdeeb19b92b70acf45e88a5908/pygame-1.9.6-cp37-cp37m-win_amd64.whl
Installing collected packages: numpy, Pillow, pygame
Successfully installed Pillow-7.0.0 numpy-1.18.1 pygame-1.9.6

Здесь мы использовали ту же команду install с pip.

Однако дополнительный аргумент -r указывает pip, что мы передаём файл с требованиями, а не имя пакета.


Создание файла requirements

В качестве альтернативы созданию файла требований вручную pip предлагает команду freeze. Давайте рассмотрим, как использовать эту команду.

Предположим, в нашей текущей среде Python установлены следующие пакеты. Их можно отобразить с помощью pip list.

Package    Version
---------- -------
numpy      1.17.0
Pillow     6.1.0
pip        19.3.1
pygame     1.9.6
setuptools 45.0.0
wheel      0.33.6

Пакеты, которые не идут предустановленными с Python, выводятся с помощью команды freeze.

pip freeze

Вывод

numpy==1.17.0
Pillow==6.1.0
pygame==1.9.6

Команда pip freeze отображает пакеты и их версии в формате файла требований.

Поэтому этот вывод можно перенаправить для создания файла требований, используя следующую команду:

pip freeze > requirements.txt

В рабочем каталоге создаётся новый файл requirements.txt. Он может быть позже использован в других средах Python для установки конкретных версий пакетов.


Поиск пакетов в pip

Команда search используется для поиска пакетов в командной строке. Рассмотрим пример:

pip search pygame

Вывод

pygame-anisprite (1.0.0)               - Animated sprites for PyGame!
pygame-ai (0.1.2)                      - Videogame AI package for PyGame
pygame-engine (0.0.6)                  - Simple pygame game engine.
pygame-assets (0.1)                    - Assets manager for Pygame apps
pygame-gui (0.4.2)                     - A GUI module for pygame 2
pygame-spritesheet (0.2.0)             - Python pygame extension that provides SpriteSheet class.
pygame-minesweeper (1.0)               - Minesweeper game implemented in python using pygame
pygame-menu (2.1.0)                    - A menu for pygame, simple, lightweight and easy to use
pygame-plot (0.1)                      - Quick visualization of data using pygame with a matplotlib style
pygame (1.9.6)                         - Python Game Development
...

Здесь мы искали библиотеку под названием pygame. Отображаются все другие пакеты, соответствующие ключевому слову. Эта команда полезна для поиска связанных пакетов.

Чтобы узнать больше о pip, посетите: Python pip (официальная документация)