Вступление
Обновление пакетов Python может быть проблемой. Их много - сложно отслеживать все новейшие версии, и даже когда вы решаете, что обновлять, вам все равно придется обновлять каждую из них вручную.
Для решения этой проблемы был создан pip-review. Он позволяет легко управлять всеми доступными обновлениями PyPi с помощью простых команд.
Первоначально являясь частью пакета pip-tools
, теперь он существует
как отдельная удобная оболочка для pip
. В этом руководстве мы
расскажем, как обновить все пакеты с помощью pip-review .
Установить pip-review
Вы можете установить pip-review
в виртуальной среде, если вы хотите ее
содержать, или в общесистемной среде. Естественно, установка
pip-review
осуществляется через pip
:
$ pip install pip-review
...
Successfully installed pip-review-1.1.0
Справочная страница pip-review
Если вы забыли какую-либо из этих команд или вам просто нужен обзор параметров команды:
$ pip-review -h
usage: pip-review [-h] [--verbose] [--raw] [--interactive] [--auto]
Keeps your Python packages fresh. Looking for a new maintainer! See https://github.com/jgonggrijp/pip-review/issues/76
optional arguments:
-h, --help show this help message and exit
--verbose, -v Show more output
--raw, -r Print raw lines (suitable for passing to pip install)
--interactive, -i Ask interactively to install updates
--auto, -a Automatically install every update found
Unrecognised arguments will be forwarded to pip list --outdated and pip install, so you can pass things such as --user, --pre and --timeout and they will do what you expect. See pip list -h and pip install -h
for a full overview of the options.
Проверить все версии пакетов с помощью pip-review
Иногда вам просто нужно проверить, есть ли какие-либо обновления, прежде чем переходить к потенциально длинному списку обновлений. Чтобы проверить все версии пакета, просто запустите:
$ pip-review
scikit-learn==0.23.2 is available (you have 0.23.1)
scipy==1.5.4 is available (you have 1.4.1)
seaborn==0.11.0 is available (you have 0.10.1)
...
Это дает вам отчет, в котором перечислены все доступные обновления
пакетов. По сути, он называет pip list – outdated
. Это имеет то
преимущество, что вы можете решить, какие пакеты вы хотите обновить,
если они вообще есть.
Обновите все пакеты с помощью pip-review
После того, как вы определили, хотите ли вы обновить свои пакеты, вы можете обновить их все автоматически, используя:
$ pip-review --auto
Collecting beautifulsoup4==4.9.3
Downloading beautifulsoup4-4.9.3-py3-none-any.whl (115 kB)
...
Выполнение только этой команды - все готово. Это так просто.
Обновите все пакеты в интерактивном режиме с помощью pip-review
Если вы, возможно, не хотите обновлять некоторые конкретные пакеты, вам
не нужно запускать программу обновления --auto
Если вы запустите
процесс как --interactive
, вы можете выбрать для каждого отдельного
пакета, хотите ли вы его обновлять или нет:
$ pip-review --interactive
matplotlib==3.3.3 is available (you have 3.1.3)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit N
numpy==1.19.4 is available (you have 1.18.1)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit Y
pandas==1.1.5 is available (you have 1.0.3)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit N
...
Для каждого пакета доступно четыре варианта: «Да», «Нет», «Все» и «Выйти».
Выбор «Да» означает, что вы хотите, чтобы этот конкретный пакет был добавлен в «список подлежащих обновлению». В конце каждый пакет в этом списке обновляется.
Если вы в конечном итоге выберете «Нет», это будет означать, что пакет
не будет обновляться. Выбор «Все» означает, что все продвигаемые пакеты
будут добавлены в список. Наконец, выбор «Quit» будет означать, что
pip-review
пропустит все оставшиеся пакеты и обновит только те, для
которых вы выбрали «Yes».
Запретить pip-review обновлять определенные пакеты
В некоторых ситуациях может потребоваться запретить автоматическое
обновление определенных пакетов при запуске pip-review --auto
.
Возможно, это было сделано для того, чтобы избежать проблем с
зависимостями, что является распространенной проблемой.
В этих случаях вам нужно закрепить определенные пакеты, которые вы не хотите обновлять. Вы можете сделать это через файл ограничений . Файл ограничений - это файл требований, который контролирует только то, какая версия требования установлена, а не то, установлена она или нет.
Его синтаксис и содержимое идентичны файлам требований. Есть одно ключевое отличие:
Включение пакета в файл ограничений не запускает установку пакета.
Создадим файл constraints.txt
$ export PIP_CONSTRAINT="/home/username/constraints.txt
А теперь в него вставим:
matplotlib==3.1.3
pandas==1.0.3
Заключение
Обновление пакетов с помощью pip
может быть утомительным и трудоемким.
И, как и ожидалось в мире информатики, родился инструмент для
автоматизации этого. В этой статье мы pip-review
- как ее установить,
а также как использовать ее для обновления пакетов в Python.