- Как обновить все пакеты Python установленные с pip
- Как обновить пакеты с pip
- Как с pip показать пакеты, для которых вышли новые версии
- Как в pip обновить сразу все пакеты
- Заключение
- Связанные статьи:
- How to Upgrade Python Packages with Pip
- How to use pip to upgrade Python packages
- 1. List outdated packages
- 2. Upgrade a specific package
- 3. Upgrade package to specific version
- 4. Upgrade every package using Pip
- Wrapping Up
- Обновление всех пакетов Python с помощью pip
Как обновить все пакеты Python установленные с pip
Пакет pip — это программа для установки и управления пакетами Python. Сам пакет pip в репозитории вашего дистрибутива существует в двух версиях:
- для Python 3 (называется python3-pip или python-pip в зависимости от того, какая версия Python является версией по умолчанию для вашего дистрибутива)
- для Python 2 (называется python2-pip или python-pip в зависимости от того, какая версия Python является версией по умолчанию для вашего дистрибутива)
С помощью pip можно устанавливать пакеты Python. Это вносит некоторую путаницу, поскольку эти же самые пакеты можно устанавливать из стандартного репозитория вашего дистрибутива. Но в репозитории имеются далеко не все пакеты Python — только те, которые сопроводители дистрибутива упаковали в установочный пакет этого дистрибутива. Следовательно, через pip можно установить намного больше разных пакетов Python (если они вам нужны).
Как обновить пакеты с pip
Но использование pip имеет свои неудобства — программа не отслеживает выход новых версий и не выполняет их автоматическое обновление.
Поэтому пакеты нужно обновлять вручную и по одному следующими командами:
sudo pip install [имя_пакета] --upgrade
Или более короткий вариант:
sudo pip install [имя_пакета] -U
Проблема здесь в том, чтобы узнать вышла ли уже новая версия пакета?
По этой причине лично я стараюсь устанавливать пакеты Python из стандартного репозитория, поскольку в этом случае они обновляются автоматически при обновлении других пакетов системы. И только если их там нет, то я использую для установки pip.
Как с pip показать пакеты, для которых вышли новые версии
С помощью pip можно проверить выход новых версий. К счастью, это для этого не нужно вводить имя каждого пакета по отдельности.
Следующая команда проверяет наличие новых версий для каждого установленного пакета и выведет только те из них, для которых вышли обновления:
Программа проверяет версии для всех пакетов Python. Обычно их довольно много, поэтому программа может работать довольно долго — несколько минут.
Как в pip обновить сразу все пакеты
Можно посмотреть список устаревших пакетов и потом по одному обновлять их командой, которая дана ещё чуть выше. Но это можно сделать проще.
Следующая большая команда найдёт список всех устаревших пакетов Python и обновит их:
for i in $(pip list -o | awk 'NR > 2 '); do sudo pip install -U $i; done
В сердце этой команды лежит предыдущая медленная команда pip list -o, поэтому выполнение займёт определённое время.
Если вы учитесь программировать на Python3, то вашему сердцу может быть ближе следующий вариант. Создайте файл с именем xx.py и скопируйте в него:
import subprocess as sbp import pip pkgs = eval(str(sbp.run("pip3 list -o --format=json", shell=True, stdout=sbp.PIPE).stdout, encoding='utf-8')) for pkg in pkgs: sbp.run("pip3 install --upgrade " + pkg['name'], shell=True)
Сохраните и закройте этот файл. Когда вы захотите обновить ваши пакеты Python, то запустите этот скрипт следующим образом:
Есть ещё парочка способов выполнить полное обновление системы, пример команды:
sudo pip install -U $(pip freeze | awk '')
Её принцип заключается в том, что она составляет список всех пакетов Python, а затем каждый из них пытается обновить. Если обновления нет — то ничего страшного, просто происходит переход к следующему пакету из списка. Если обновление есть, то оно устанавливается и вновь происходит переход к следующему пакету из списка, пока программа полностью не завершит свою работу.
Конечный результат такой же — будут обновлены все пакеты Python.
У предыдущей команды есть ещё один вариант:
sudo pip install -U $(pip freeze | cut -d '=' -f 1)
Принцип работы абсолютно такой же.
Заключение
pip обновляет пакеты только одной версии Python — то есть для Python3 или для Python2 — это зависит от того, какая версия Python является версией по умолчанию для вашего дистрибутива.
Если вы также хотите обновить пакеты для другой версии, то в предыдущих командах везде заменяйте pip на pip2 или pip3 — в зависимости от вашего дистрибутива.
Или вот вариант ещё проще, следующие команды одинаково сработают абсолютно в любых дистрибутивах, так как в них версии указаны явно (при условии, что pip2 и pip3 установлены в вашей системе).
Для обновления всех пакетов Python3:
for i in $(pip3 list -o | awk 'NR > 2 '); do sudo pip3 install -U $i; done
Для обновления всех пакетов Python2:
for i in $(pip2 list -o | awk 'NR > 3 '); do sudo pip2 install -U $i; done
При обновлении пакетов могут возникать различные ошибки и предупреждения, которые требуют индивидуального подхода. Например, если ошибка в отсутствующей зависимости, то установите необходимую зависимость для обновлённого пакета.
Связанные статьи:
How to Upgrade Python Packages with Pip
When was the last that you updated Python packages installed via Pip? Most of the users tend to forget that those packages also need to be updated, as just updating the system repository is not going to work here.
So let’s take a moment and see how to update old Python packages with Pip.
How to use pip to upgrade Python packages
Pip (Pip Installs Packages) is a command line utility to manage python packages. You can think of this as how we use apt to manage packages in Ubuntu and Debian.
So let’s dive deep into how you can use this fab utility to manage everything related to Python packages.
1. List outdated packages
Listing the outdated packages is the best idea to plan how you want to update packages as not many want to update their entire library of packages at once and wants to be selective.
To list outdated packages of Python, you just have to pair pip command with list option and —outdated flag as shown:
2. Upgrade a specific package
Once you get the list of the packages that need to be updated, you can be selective as I mentioned earlier, and to update a specific package, you’ll need to follow the given command syntax:
pip install package_name -U
For example, I want to upgrade the package named anime-api to the most recent version, so I’ll be using the given command:
3. Upgrade package to specific version
It is not necessary to use only the most recent version of the software (cough Debian cough) and if you are in need of using packages to a specific version that may or may not be the most recent software, can be done using the given command syntax:
So I want to update the package named xdg to version 5.1 which is one point release behind the most recent build so my command would be:
pip install --upgrade xdg==5.1
4. Upgrade every package using Pip
NOTE: I do not recommend upgrading every package at once as most of the time, the dependencies are too complex to be handled.
To upgrade every python package, you’d need to follow the given command:
pip3 list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip3 install -U
The above command utilizes xargs. First, it will grab the packages that are needed to be updated and then perform pip3 install -U command over each package.
And I used pip3 here instead of pip. In Ubuntu 22.04 and later, both pip and pip3 commands are available.
Wrapping Up
Upgrading everything at once has never been a good idea in the case of pip. And I found myself in a state of broken dependencies so make sure you know what you will have.
And if you have any queries, feel free to ask in the comments.
Обновление всех пакетов Python с помощью pip
В работе с Python часто возникает необходимость обновления установленных пакетов. Это может быть связано с тем, что разработчики выпустили новую версию, в которой исправлены ошибки, добавлены новые функции или улучшена производительность.
Рассмотрим пример. Предположим, у вас на компьютере установлены следующие пакеты Python: numpy, pandas и matplotlib. Версии этих пакетов 1.0, 1.0 и 2.0 соответственно. Вы узнали, что вышли новые версии этих пакетов и хотите обновить их все сразу.
Инструмент pip для Python позволяет обновлять пакеты, но изначально не предусматривает возможности обновления всех пакетов сразу. Однако, есть способ обновить все пакеты за один раз.
Для начала, вам нужно получить список всех установленных пакетов. Это можно сделать с помощью команды:
pip freeze > requirements.txt
Эта команда создаст файл requirements.txt, в котором будут перечислены все установленные пакеты и их версии.
Далее, чтобы обновить все пакеты, можно использовать следующую команду:
pip install --upgrade -r requirements.txt
Таким образом, все пакеты из файла requirements.txt будут обновлены до последних версий.
Однако стоит учесть, что этот способ может не подойти для всех ситуаций. В некоторых случаях, обновление одного пакета может вызвать проблемы с другими пакетами, которые зависят от этого пакета. Поэтому всегда стоит подходить к обновлению пакетов с осторожностью.
Важно помнить, что pip не предоставляет встроенной функции для обновления всех пакетов сразу. Поэтому, если вам нужно обновить все пакеты, вам придется использовать немного другой подход, как было показано выше.