Менеджер пакетов PIP. Гайд по использованию
PIP — это менеджер пакетов. Он позволяет устанавливать и управлять пакетами на Python.
Представьте себе ситуацию: вы собираете проект и подключаете множество сторонних библиотек для реализации своей задачи. Если это делать вручную, процесс выглядит примерно так:
- вы заходите на сайт, выбираете нужную версию пакета;
- скачиваете ее, разархивируете, перекидываете в папку проекта;
- подключаете, прописываете пути, тестируете.
Вполне вероятно, что эта версия библиотеки вообще не подходит, и весь процесс повторяется заново. А если таких библиотек 10? Устанавливать их вручную?
Нет 🙅🏻♂️
Менеджер пакетов PIP — решает данную проблему. Весь процесс установки пакета сводится к выполнению консольной команды pip install package-name
. Несложно представить, сколько времени это экономит.
Если вы работали с другими языками программирования, концепция pip может показаться вам знакомой. Pip похож на npm (в Javascript), composer (в PHP) или gem (в Ruby).
Pip является стандартным менеджером пакетов в Python
Pip или pip3?
В зависимости от того, какая версия Python установлена в системе, может потребоваться использовать pip3 вместо pip.
Если вы не знаете какая версия Python установлена на вашей системе, выполните следующие команды:
python --version
— для Python 2.xpython3 --version
— для Python 3.xpython3.8 --version
— для Python 3.8.x
Советуем использовать версию Python 3.6 и выше
Если команда "python" не найдена, установите Python по инструкции из предыдущей статьи.
Далее нужно убедиться, что сам PIP установлен и работает корректно. Узнать это поможет команда:
pip --version
Команда отобразит в консоли версию pip, путь до pip и версию python, для которой в дальнейшем будут устанавливаться пакеты:
pip 19.2.3 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)
☝️ Важный момент: в зависимости от того, какую версию Python вы будете использовать, команда может выглядеть как pip
, pip3
или pip3.8
Альтернативный вариант вызова pip:
python3.7 -m pip install package-name
Флаг -m
сообщает Python-у запустить pip как исполняемый модуль.
Если pip не установлен
Pip поставляется вместе с Python, и доступен после его установки. Если по какой-то причине pip не установлен на вашей системе, установить его будет не сложно.
Windows
- Скачайте файл get-pip.py и сохраните у себя на компьютере.
- Откройте командную строку и перейдите в папку, в которой сохранен
get-pip.py
. - В командной строке выполните команду:
python get-pip.py
илиpython3 get-pip.py
. - PIP установлен 🎉!
Linux (Ubuntu и Debian)
Прежде, чем перейти к непосредственному описанию, хотим отметить, что все команды, описанные ниже, используются от имени root пользователя. Если же вы являетесь обычным пользователем на компьютере, то потребуется использовать команду sudo
, чтобы получить привилегии root.
Для Питона 2-й версии, выполните команду:
apt-get install python-pip
Для Питона 3-ей версии:
apt-get install python3-pip
MacOS
- скачайте файл
get-pip.py
командойcurl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
; - запустите скачанный файл командой:
python get-pip.py
илиpython3 get-pip.py
.
Должна появиться запись Successfully Installed. Процесс закончен, можно приступать к работе с PIP на MacOS!
Как обновить PIP
Иногда, при установке очередного пакета, можно видеть сообщение о том, что доступна новая версия pip.
WARNING: You are using pip version 19.2.3, however version 19.3.1 is available.
А в следующей за ней строке
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
указана команда для обновления pip:
python -m pip install --upgrade pip
Команды PIP
Синтаксис pip выглядит следующим образом: pip + команда + доп. опции
pip <command> [options]
Со всеми командами pip можно ознакомиться, выполнив pip help . Информацию по конкретной команде выведет pip help <command>
.
Рассмотрим команды pip:
pip install package-name
— устанавливает последнюю версию пакета;pip install package-name==4.8.2
— устанавливает пакет версии 4.8.2;pip install package-name --upgrade
— обновляет версию пакета;pip download
— скачивает пакеты;pip uninstall
— удаляет пакеты;pip freeze
— выводит список установленных пакетов в необходимом формате ( обычно используется для записи вrequirements.txt
);pip list
— выводит список установленных пакетов;pip list --outdated
— выводит список устаревших пакетов;pip show
— показывает информацию об установленном пакете;pip check
— проверяет установленные пакеты на совместимость зависимостей;pip search
— по введенному названию, ищет пакеты, опубликованные в PyPI;pip wheel
— собирает wheel-архив по вашим требованиям и зависимостям;pip hash
— вычисляет хеши архивов пакетов;pip completion
— вспомогательная команда используется для завершения основной команды;pip help
— помощь по командам.
Пример работы с пакетами
PIP позволяет устанавливать, обновлять и удалять пакеты на компьютере. Ниже попробуем разобраться с работой менеджера pip на примере парсинга названий свежих статей на сайте habr.com.
- установим нужные пакеты;
- импортируем пакет в свой скрипт;
- разберемся, что такое
requirements.txt
; - обновим/удалим установленные пакеты.
Приступим 🙎🏻♂️
Шаг #1 Установка.
Для начала, нам необходимо установить beautifulsoup4 — библиотеку для парсинга информации с веб-сайтов.
pip3 install beautifulsoup4
pip найдет последнюю версию пакета в официальном репозитории pypi.org. После скачает его со всеми необходимыми зависимостями и установит в вашу систему. Если вам нужно установить определенную версию пакета, укажите её вручную:
pip3 install beautifulsoup4==4.8.2
Данная команда способна даже перезаписать текущую версию на ту, что вы укажите.
Также для работы beautifulsoup нам понадобится пакет lxml:
pip install lxml
☝️ Важный момент: по умолчанию pip устанавливает пакеты глобально. Это может привести к конфликтам между версиями пакетов. На практике, чтобы изолировать пакеты текущего проекта, создают виртуальное окружение (virtualenv).
Шаг #2 Импортирование в скрипте.
Для того чтобы воспользоваться функционалом установленного пакета, подключим его в наш скрипт, и напишем простой парсер:
from urllib.request import urlopen
from bs4 import BeautifulSoup
# скачиваем html
page = urlopen("https://habr.com/ru/top/")
content = page.read()
# сохраняем html в виде объекта BeautifulSoup
soup = BeautifulSoup(content, "lxml")
# Находим все теги "a" с классом "post__title_link"
all_a_titles = soup.findAll("a", { "class" : "post__title_link" })
# Проходим по каждому найденному тегу и выводим на экран название статьи
for a_title in all_a_titles:
print(a_title.text)
Шаг #3 requirements.txt.
Если вы просматривали какие-либо проекты Python на Github или где-либо еще, вы, вероятно, заметили файл под названием requirements.txt. Этот файл используется для указания того, какие пакеты необходимы для запуска проекта (в нашем случае beautifulsoup4 и lxml).
Файл requirements.txt
создается командой:
pip freeze > requirements.txt
и выглядит следующим образом:
beautifulsoup4==4.8.2
lxml==4.4.2
soupsieve==1.9.5
Теперь ваш скрипт вместе с файлом requirements.txt можно сохранить в системе контроля версий (например git).
Для работы парсера в новом месте (например на компьютере другого разработчика или на удаленном сервере) необходимо затянуть файлы из системы контроля версий и выполнить команду:
pip install -r requirements.txt
Шаг #4 Обновление/удаление установленных пакетов.
Команда pip list --outdated
выведет список всех устаревших пакетов. Обновить отдельно выбранный пакет поможет команда:
pip install package-name --upgrade
Однако бывают ситуации, когда нужно обновить сразу все пакеты из requirements.txt. Достаточно выполнить команду:
pip install -r requirements.txt --upgrade
Для удаления пакета выполните:
pip uninstall package-name
Для удаления всех пакетов из requirements.txt:
pip uninstall -r requirements.txt -y
Мы разобрали основы по работе с PIP. Как правило, этого достаточно для работы с большей частью проектов.
pip search не пашет уже более, вроде, года. Через poetry ищу пакеты.
Да, pip search отключили.
В качестве альтернативы еще можно использовать:
Правильно ли я понял, что чтобы воспользоваться встроенной прогой, мне нужно скачать ещё костыль под названием "прекрасныйсуп4"?
Библиотека beautifulsoup4 взята в качестве наглядного примера, чтобы показать, как работать с менеджером пакетов PIP.
В каких случаях надо делать удаления пакета? Когда мы выходим из переменных окружения, я так понимаю, если мы устанавливали их туда, то всё там и останется и если мы потрём проект (и в нём хранились env файлы), то удалится и то, что установлено, по идее. Так ведь? Просто кейс с pip uninstall не могу придумать. Наверное это надо, когда какой-то пакет уже не используется, так? Тогда, по идее, нужно сразу и обновить requirements.txt