Python: обновить все пакеты с помощью pip-review

Введение Обновление пакетов Python может быть проблемой. Их много - сложно отслеживать все новейшие версии, и даже когда вы решаете, что обновлять, вам все равно придется обновлять каждую из них вручную. Чтобы решить эту проблему, был создан pip-review [https://pypi.org/project/pip-review/]. Он позволяет легко управлять всеми доступными обновлениями PyPi [https://pypi.org/] с помощью простых команд. Первоначально являясь частью пакета pip-tools, теперь он существует как отдельная удобная оболочка.

Вступление

Обновление пакетов 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.

comments powered by Disqus