Найти в Дзене
Каждодневье

Менеджер пакетов в Python? Можно просто - PIP

Оглавление

В своих постах при недостатке определенных пакетов указываю комментарий вида pip install пакет. Слепо следуя наставлениям читатель может подумать, что у пакета только одна команда. Только это не так. И сегодня мы разберемся в этом менеджере пакетов поподробнее.

Для каких целей нужно использовать менеджер пакетов PIP?

Все дело в пакетной корзинке. Для Python написано невероятное количество пакетов. Если обратиться к официальному ресурсу, откуда pip берет данные, то на 11.06.2021 число пакетов превышает 309 832 пакета.

Узнав название нужного пакета, вы можете из этого хранилища расширений получить последний релиз или тот, который нужен для вашей работы. Вот и выходит, что pip используется для установки, обновления и удаления более невостребованных пакетов.

Убедитесь, что менеджер пакетов установлен

Редкая ситуация, что pip не установлен, так как в последних версиях python под windows в установщике он стоит "галкой по умолчанию". Только ее ручное отключение может не дать установить пакет.

Запустите в консоли | терминале команду:

where pip

Средствами системы будет осуществлен поиск зарегистрированных пакетов. В моем случае был выдан такой результат:

Вывод в терминале найденных пакетов.
Вывод в терминале найденных пакетов.

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

В некоторых случаях (актуально для пользователей Linux или macOS) требуется применять команду pip3 . Это связано с тем, что на *nix системах присутствуют сразу обе версии языка (Python2 и Python3). Python 2 признан устаревшим, поэтому в новых релизах операционных систем linux его убирают.

Если вы используете PyCharm с установленным виртуальным окружением python3, то в его терминальной сессии всегда pip, независимо от операционной системы.

Менеджер пакетов - это тоже пакет, который требует обновления. Обновляется следующей командой:
python -m pip install -U pip

В моем случае обновление не требуется, система извещает об этом:

-3

Установка и удаление пакетов

Давайте начнем с основной команды менеджера пакетов. Для примера установим пакет Openpyxl

openpyxl - это библиотека Python для чтения / записи файлов Excel 2010 и выше с расширениями файла xlsx / xlsm / xltx / xltm.

вводим в терминал pip install openpyxl

При выполнении команды менеджер пакетов найдет последнюю версию запрашиваемой библиотеки, определит зависимости и при их наличии сверит сначала их нахождение на локальном компьютере. Если зависимость устарела - обновит ее самостоятельно. Потом будет выполнена установка требуемого пакета.

Готово - библиотеку можно использовать в ваших великолепных скриптах согласно мануалам из обширной сети интернет.

Но вероятно вы это и так знаете. В некоторых ситуациях пакеты используются совместно и есть востребованность в определенной версии. Именно в ней функционал работал иначе. Нужно поставить требуемое. Как?

Сначала посмотрим что у нас есть из пакетов и какой версии:

Запустим в терминале pip freeze

Видим, что среди всех пакетов есть та, для которой нужна старая версия.
Видим, что среди всех пакетов есть та, для которой нужна старая версия.

Затем мы должны ввести уточняющую команду. Например мне нужна не последняя версия установленного пакета, а более ранняя. Зайдем на сайт и глянем на версионность (чтобы от балды не ставить версию, которой не существует). Например эта:

Просмотр дерева обновлений требуемого пакета на pypi.org
Просмотр дерева обновлений требуемого пакета на pypi.org

Для этого вводим команду, которая за вас снова сверит все зависимости для совместимости, удалит текущий пакет и установит требуемый:

pip install openpyxl==3.0.5

pip снес ненужную версию и установил требуемую. Без сучка и задоринки.
pip снес ненужную версию и установил требуемую. Без сучка и задоринки.

Также можно использовать и другие команды. На случай если нам надо ставить пакеты не младше | старше определенной версии. Операторы -стандартные для сравнительных условий Python.(== >= <= < >)

pip install openpyxl>=3.0.5

pip install openpyxl<=3.0.5

В случаях, когда установленный пакет сбоит, работает некорректно - возможна принудительная переустановка:

pip install --force-reinstall openpyxl

Командой выше текущий пакет будет переустановлен до текущей версии.

Удаление модулей | библиотек | пакетов по аналогии с установкой происходит так: pip uninstall openpyxl

Чтобы при стирании не запрашивалось подтверждение от пользователя («введите Y для удаления или N для отмены»), применяется ключ -y или --yes : pip uninstall -y openpyxl

Что такое файл зависимостей?

Представьте ситуацию, что вы сидите дома за компьютером, в котором вы накопили значительное количество пакетов Python, идеально подобранных для выполнения ваших повседневных задач. И вам захотелось переехать на ноутбук и перенести все пакеты в новое окружение. Как это сделать?


Для этого надо создать файл зависимостей, в котором будет перечисление всех требуемых библиотек в действующем окружении. Его принято называть
requirements.txt, но вы можете проявить фантазию и назвать его как угодно. Только в рабочей среде с другими кодерами желательно использовать типовое именование :-)

Давайте создадим этот файл в терминале командой:

pip freeze > requirements.txt

Файлик, который сформировался при выполнении команды.
Файлик, который сформировался при выполнении команды.

Копируем этот файл на флешечку и несем в ноут. Кладем файлик в рабочую папочку окружения или прописываем абсолютный путь до него и выполняем программу:

pip install -r requirements.txt

PIP сбегает внутрь файлика requirements.txt и для каждой строки выполнит установку. Обратите внимание, что будет установлена та версия, которая указана в файлике. Это можно изменить, затерев ее или прописав ту версию или диапазон версий, которые проверены в вашем рабочем процессе.

Так можно прописать в файлике рабочий диапазон проверенных вами версий (будет выбрана самая свежая версия) openpyxl>=3.0.5, <=3.0.7

Едем дальше!

Не Freezoм едины!

Ранее мы рассматривали наличие пакетов через pip freeze, но для этой задачи есть и более востребованный функционал pip list

Будет выведен идентичный лист установленных пакетов, но если вызвать эту команду с параметром -o , то будут показаны пакеты, для которых есть более свежая версия в пуле приложений на серверах pypi.org.

Я умышленно установлю устаревшие версии пакетов, чтобы показать в действии описываемое и пропишу команду pip list -o :

На экране отражаются текущие версии пакетов и последние, информация по которым указана на pypi.org.
На экране отражаются текущие версии пакетов и последние, информация по которым указана на pypi.org.

Нужна для поиска пакетов, доступных на серверах. В результатах вы увидите краткое описание пакета, версию. Также в случаях, когда пакет у вас установлен - покажет различие в версиях на сервере и на вашей машине. Удобно. Запустим: pip search openpyxl

И вот беда... что-то у питона обновы идут:

Временные трудности. хотя в мануалах есть эта команда и она пока не закрыта в справке.
Временные трудности. хотя в мануалах есть эта команда и она пока не закрыта в справке.

Это не все команды, есть и другие. Полный список команд и параметров использования можно найти через запрос в терминале pip help

Надеюсь в определенный момент изучения языка программирования этот пост вам пригодится.

Подписывайтесь, ставьте лайки. Я очень надеюсь на долгосрочное развитие этого канала. Мне важен любой комментарий, совет или наставление. Мира вам :-)