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 (официальная документация)