Pip Upgrade – And How to Update Pip and Python

Kolade Chris

Python is a widely used and powerful programming language that’s relatively simple to learn.
Python releases patch updates every few months and major updates around once in a year. Because of this, it is always a good idea to update the version of Python you have on your computer.
In addition, you need to update Python so you can get access to the exciting features they add after major updates. For example, there’s quite a speed improvement in Python 3.11 over 3.10.
There’s also a Python package manager called Pip you might need to update occasionally. It is to Python what NPM is to JavaScript.
Starting from Python 3.4, Pip comes with the standard Python distribution. But if you don’t get it after installing Python for some reason, then you need to install it manually.
In this article, I will show you how to update Python on your Mac and Windows computer. I will also show you how to update Pip on the two operating systems.
What We’ll Cover
- How to Update Python and Pip on Mac OS
- How to Update Python and Pip with Homebrew
- How to Update Only Pip with the Terminal
- Conclusion
How to Update Python and Pip on Mac OS
One of the easiest ways to update Python and Pip on Mac is by downloading the package from the Python official website.
When you update Python, the Pip version that comes with it is also updated.
First, check the versions of Python and Pip you have by running python3 —version and pip3 —version :


For me, I picked 3.11 because it’s now stable.
Scroll down and download it for your OS – be it Windows or Mac. I chose Mac becuase I use Mac:

Run the installer and follow every prompt you see.

Confirm the installation by running python3 —version and pip3 —version :

How to Update Python and Pip with Homebrew
If you use Mac, you can also update Python and Pip with Homebrew.
Install pyenv by running brew install pyenv . pyenv is a Python version management tool. It is to Python what NVM (Node version manager) is to JavaScript.

Install any version of Python you want, for instance, 3.9 or 2.7:

You can also update Python by running pyenv latest-version-number . For example, python 3.11 . When you install that Python version, you install Pip too.
How to Update Only Pip with the Terminal
In cases when you want to update only Pip, open your terminal and run pip3 install —upgrade pip . You can then confirm the update by running pip3 —version :

Conclusion
This article took you through how to update Python and Pip by downloading the installation package and using the command line. We also looked at how you can update Pip only if you want to.
If you are using Windows and you want to update Python and Pip, you can also download the latest installer and let the installation wizard guide you through installing it.
Thanks for reading!
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT

Kolade Chris
Web developer and technical writer focusing on frontend technologies. I also dabble in a lot of other technologies.
If you read this far, thank the author to show them you care. Say Thanks
Learn to code for free. freeCodeCamp’s open source curriculum has helped more than 40,000 people get jobs as developers. Get started
ADVERTISEMENT
freeCodeCamp is a donor-supported tax-exempt 501(c)(3) charity organization (United States Federal Tax Identification Number: 82-0779546)
Our mission: to help people learn to code for free. We accomplish this by creating thousands of videos, articles, and interactive coding lessons — all freely available to the public. We also have thousands of freeCodeCamp study groups around the world.
Donations to freeCodeCamp go toward our education initiatives, and help pay for servers, services, and staff.
Python Дайджест: как обновиться с Python 3.4 до Python 3.11, если pip уже сломан
Python Дайджест собирает IT-новости уже 9 лет, рассказывает о концепциях, проектах, релизах. Кодовая база за это время мало изменилась и уже деградировала. Более 5 лет не хватало сил и времени, чтобы привести проект в актуальное состояние. Django с 1.9 обновилась уже до 4.1 версии, Python 3.4 не актуален, да даже обновить пакет через pip не получается, потому что сломан.
В 4 частях расскажу от первого лица, как 9-летний проект из состояния outdated вернулся в actual состояние и снова набрал 100 баллов в PageSpeed.
Начну с обновления до актуального Python и Django.
О Python Дайджест
Python Дайджест — это open source проект про Python, написанный на Python. В следующем году исполнится 10 лет как собираются, вычищаются, изучаются материалы и собираются дайджесты.
Проект был создан разработчиками и для разработчиков. Хотелось знать актуальные подходы к разработке, библиотеки, обновления важных библиотек, узнавать, что теперь стало стандартом. И с того времени мало что поменялось. И все также я использую этот ресурс, чтобы быть «в курсе», только теперь не для себя, а для команд, с которыми работаю.
Состояние на конец ноября 2022:
- Есть сервер на Ubuntu 14.04 с запущенным через uwsgi и supervisor Django приложением.
- Основное virtualenv окружение с версией Python 3.4, но когда-то pip был обновлен руками на основе 3.6 версии и теперь не работает pip freeze .
- Дополнительный virtualenv с версией Python 3.6, в котором работает часть приложения, но зависимости не совпадают с requirements.txt.
- Как сконфигурирован сервер, приложение, переменные окружения и прочее — никто уже не помнит, а в bash history ничего нет.
- Изменения в код вносились прямо на сервере и не дублировались в git.
- Импорт новостей сбоит — системные SSL сертификаты устарели и уже не получается их обновить.
Задача (часть 1) — обновиться минимум до Python 3.6
3.6 — реперная точка, потому что там появились f-string. Эту функциональность нельзя включить через какой-нибудь __future__ flag на более старых версиях. При этом свежие версии библиотек почти всегда используют f-string.
План работ
- Объединить код сервиса с сервера и git ветки.
- Развернуть окружение на Python 3.4, чтобы запустить тесты локально.
- Обновить зависимости и перейти на poetry для управления ими.
- Постепенно обновлять зависимости и интерпретатор, чтобы получить Python 3.11 и Django 4.1.
Как синхронизировал кодовую базу
Для начала объединил текущую мастер-ветку с актуальным серверным кодом:
- Заархивировал в tar.gz и перенес код с сервера на локальную машину с помощью scp .
- Через meld (инструмент для визуального diff) просмотрел изменения и объединил их.
- Сохранил в отдельной ветке результат объединения.
При объединении двух версий кодовых баз стоит внимательнее смотреть на:
- Тесты. Как изменились тесты из репозитория, что теперь проверяют.
- Миграции. Были ли изменения базы данных и какие. Бэкапом их повторим, а миграции нужно добавить в репозиторий.
- Настройки и переменные окружения, в том числе и как обрабатываются типы переменных.
- Как используются новые версии библиотек, чтобы учесть изменения их API.
Как НЕ запустил Python 3.4 на Ubuntu 22.04
У меня в системе стоит Python 3.10, что много выше, чем Python 3.4, который требуется для запуска приложения.
К счастью, есть pyenv, который позволяет установить любую версию python рядом с основной.
Это так я думал, но при выполнении команды pyenv intall 3.4 получил ошибку Missing the OpenSSL lib?. Даже инструкция про это есть.
Из инструкции и Pull Request становится ясно, что за время с Python 3.4 OpenSSL обновился с 1.11 до 3.0 (перепрыгнув несколько версий) и просто так на современном дистрибутиве его не поставить. Инструкция предлагает попробовать с системным OpenSSL версии 3.0, вместо 1.11, сделать downgrade версии, через brew на Ubuntu поставить нужную версию OpenSSL.
Ничего не дало плодов. Мне нужен был 3.4 и 3.6 Python, только пока зависимости обновляю, и поднимать полноценную виртуалку не хотелось. Поэтому решил пойти по другому пути.
Как запустил Python 3.4 в Docker
Если нужен какой-то софт, который тяжело поставить/не хочется ставить в систему, то что берем? Конечно, же контейнеры. В моем случае это Docker.
Контейнеры предоставляют условно изолированную среду внутри родительской операционной системы. Можно описать образ контейнера в файле Dockerfile со всем необходимым, загрузить на Docker Hub, а затем запускать единообразным способом на разных машинах.
В Docker Hub хранятся настолько древние образы, что можно удивляться для кого они. Вот для таких проектов, которые много лет работали и не требовали критических изменений.
Составил Dockerfile с Python 3.4, который умеет стягивать зависимости из папки проекта и устанавливать их. Вуаля! Теперь можно работать с зависимостями. А если указывать команду для запуска контейнера через docker compose (внутри dev ужас), будет совсем приятно и не надо будет пересобирать слишком часто.
На этом шаге стало ясно, что проект получится актуализировать.
Как получил версии пакетов со сломанным pip
Есть контейнер с Python 3.4. Теперь нужно получить актуальный серверный requirements.txt . Как писал в начале — pip был сломан из-за ручного обновления ( python setup.py install для pip), но не беда — можно из интерпретатора достать.
import module_name help(module_name)
И оттуда вычитать версию пакета (или просто grep ‘ом парсить из venv папки).
Это нужно было сделать для всех критических пакетов, чтобы, когда будет обновление зависимостей через poetry, получили рабочее приложение.
Какие использовал менеджеры зависимостей
Немного про менеджеры зависимостей.
На практике я проходил по пути от простого pip install , затем перешел к requirements.txt , где были описаны пакеты, затем для управления зависимостей использовал pip-tools (тогда poetry еще тестировался), а уже затем стал использовать poetry :
- requirements.txt — текстовый файл, в котором по строчкам перечисляются пакеты и версии для них. Первый общеупотребимый подход по описанию зависимостей.
- pip-tools — набор утилит, которые позволяют задать для основных зависимостей версии, а версии для остальных зависимостей вычислить автоматически. Это такой переходный инструмент от состояния «не фиксируем версии» к «фиксируем основное, а остальное не знаем надо ли». Зачастую работает, но бывает получается битое окружение.
- poetry — это текущий стандарт управления зависимостями. Позволяет уже не бояться за окружение (зачастую) и вычислять версии зависимости так, чтобы все пакеты были точно согласованы.
Вероятно следующий будет pdm, а пока «стандарт» это poetry .
Pipenv с Pipfile.lock тоже использовал для управления зависимостями, хотя его мощь именно в создании всего dev окружения, а не только установка пакетов.
Как обновил Python зависимости с Docker

Image: Alice Lang, alicelang-creations@outlook.fr
Запуская через docker compose контейнер с Python 3.4, я начал приводить в порядок requirements.txt : указал актуальные версии с сервера, дописал недостающие в файл.
Это позволило запустить pip-tools (а точнее, pip-compile ) и актуализировать все остальные зависимости.
Поставил poetry и последовательно добавил все пакеты в проект. Получил lock файл с хэшами пакетов. Фуф, теперь можно обновлять зависимости дальше — через poetry add «package_name
Обычно для пакетов назначают версию: «не обновляй выше текущей версии», однако, для массового обновления, где ручным образом проверяются, стоит ставить «меньше, равно». Уже после обновления можно заменить >= на ^
Конечно же, за 5 лет без обновлений ряд пакетов устарел, что-то умерло, какие-то пакеты переименовались и преобразовались в новые.
Перед каждым обновлением изучал, что я могу удалить из устаревших зависимостей, какие модули стали дублировать функциональность.
Требовалось ходить по пакетам, смотреть их Changelog и принимать решение.
Крупные пакеты типа lxml , pandas , numpy приходилось по несколько раз обновлять, а затем снижать версию обратно. Не всегда потребители этих библиотек учитывают изменения в API.
Дальше было несколько итераций обновлений согласно таблицы совместимости Python и Django версий
- Python 3.4 + Django 1.9
- Python 3.4 + Django 1.11
- Python 3.4 + Django 2.0.13
- Переход на from django.urls import path для описания urls.py
- Добавление on_delete= для ForeignKey / OneToOneField полей моделей
- Переименование MIDDLEWARE_CLASSES на MIDDLEWARE
- Здесь инструкция
- Python 3.6 + Django 2.0.13
- Переход на f-string
- Python 3.6 + Django 2.2
- Python 3.6 + Django 3.2.16
- Удаление from django.utils.six import text_type
- Python 3.10 + Django 3.2.16
- Разделение на группы зависимостей в poetry (основная, для разработки, для тестов)
- Python 3.10 + Django 4.1
- Переименование from django.utils.translation import ugettext_lazy -> gettext_lazy
- Python 3.11 + Django 4.1
Собирал образ с новым сочетанием зависимостей, прогонял тесты, удалял/добавлял пакеты, модифицировал код под версию Django, учитывая deprecations, обновлял зависимости, экспортировал новые зависимости. И так по кругу.
По итогу был получен образ с Python 3.11 + Django 4.1, который легко было запустить вне контейнера.
Через pyenv было поднято окружение с Python 3.11, прогнаны тесты еще раз.
Теперь можно запускать проект на актуальных операционных системах.
Выводы
Вы прочитали 1 из 4 часть цикла статей про обновление проекта до актуальных технологий. Для себя сделал такие выводы:
- Для проектов на Python 3.4, 3.5, 3.6 через pyenv не всегда удается развернуть окружение. Для этого можно использовать Docker контейнеры. Собирать образ, поднимать контейнер с синхронизированной папкой исходного кода, из контейнера запускать pip install и так проводить процедуру обновления.
- С установкой poetry (даже по схеме requirements.txt -> pip-tools -> poetry ) заметно упрощается поддержка зависимостей. Poetry в пару команд позволяет выбирать актуальные зависимости для другой версии python, и сами зависимости держать в порядке.
- Вот до чего может довести «работает — не трогай» 🙂
P.S. Актуализация существующего проекта весьма затратна по времени. Обращайтесь ко мне, axsapronov, если вам требуется сделать это.
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.
Установка PIP для Python и базовые команды
Как любой серьёзный язык программирования, Python поддерживает сторонние библиотеки и фреймворки. Их устанавливают, чтобы не изобретать колесо в каждом новом проекте. Необходимы пакеты можно найти в центральном репозитории Python — PyPI (Python Package Index — каталог пакетов Python).
Однако скачивание, установка и работа с этими пакетами вручную утомительны и занимают много времени. Именно поэтому многие разработчики полагаются на специальный инструмент PIP для Python, который всё делает гораздо быстрее и проще.
Что такое PIP для Python?
Сама аббревиатура — рекурсивный акроним, который на русском звучит как “PIP установщик пакетов” или “Предпочитаемый установщик программ”. Это утилита командной строки, которая позволяет устанавливать, переустанавливать и деинсталлировать PyPI пакеты простой командой pip .
Если вы когда-нибудь работали с командной строкой Windows и с терминалом на Linux или Mac и чувствуете себя уверенно, можете пропустить инструкции по установке.
Устанавливается ли PIP вместе с Python?
Если вы пользуетесь Python 2.7.9 (и выше) или Python 3.4 (и выше), PIP устанавливается вместе с Python по умолчанию. Если же у вас более старая версия Python, то сначала ознакомьтесь с инструкцией по установке.
Правильно ли Python установлен?
Вы должны быть уверены, что Python должным образом установлен на вашей системе. На Windows откройте командную строку с помощью комбинации Win+X . На Mac запустите терминал с помощью Command+пробел , а на Linux – комбинацией Ctrl+Alt+T или как-то иначе именно для вашего дистрибутива.
Затем введите команду:
python --version
На Linux пользователям Python 3.x следует ввести:
python3 --version
Если вы получили номер версии (например, Python 2.7.5 ), значит Python готов к использованию.
Если вы получили сообщение Python is not defined (Python не установлен), значит, для начала вам следует установить Python. Это уже не по теме статьи. Подробные инструкции по установке Python читайте в теме: Скачать и установить Python.
Как установить PIP на Windows.
Следующие инструкции подойдут для Windows 7, Windows 8.1 и Windows 10.
- Скачайте установочный скрипт get-pip.py. Если у вас Python 3.2, версия get-pip.py должны быть такой же. В любом случае щелкайте правой кнопкой мыши на ссылке и нажмите “Сохранить как…” и сохраните скрипт в любую безопасную папку, например в “Загрузки”.
- Откройте командную строку и перейдите к каталогу с файлом get-pip.py.
- Запустите следующую команду: python get-pip.py
Как установить PIP на Mac
Современные версии Mac идут с установленными Python и PIP. Так или иначе версия Python устаревает, а это не лучший вариант для серьёзного разработчика. Так что рекомендуется установить актуальные версии Python и PIP.
Если вы хотите использовать родную систему Python, но у вас нет доступного PIP, его можно установить следующей командой через терминал:
sudo easy_install pip
Если вы предпочитаете более свежие версии Python, используйте Homebrew. Следующие инструкции предполагают, что Homebrew уже установлен и готов к работе.
Установка Python с помощью Homebrew производится посредством одной команды:
brew install python
Будет установлена последняя версия Python, в которую может входить PIP. Если после успешной установки пакет недоступен, необходимо выполнить перелинковку Python следующей командой:
brew unlink python && brew link python
Как установить PIP на Linux
Если у вас дистрибутив Linux с уже установленным на нем Python, то скорее всего возможно установить PIP, используя системный пакетный менеджер. Это более удачный способ, потому что системные версии Python не слишком хорошо работают со скриптом get-pip.py, используемым в Windows и Mac.
Advanced Package Tool (Python 2.x)
sudo apt-get install python-pip
Advanced Package Tool (Python 3.x)
sudo apt-get install python3-pip
pacman Package Manager (Python 2.x)
sudo pacman -S python2-pip
pacman Package Manager (Python 3.x)
sudo pacman -S python-pip
Yum Package Manager (Python 2.x)
sudo yum upgrade python-setuptools sudo yum install python-pip python-wheel
Yum Package Manager (Python 3.x)
sudo yum install python3 python3-wheel
Dandified Yum (Python 2.x)
sudo dnf upgrade python-setuptools sudo dnf install python-pip python-wheel
Dandified Yum (Python 3.x)
sudo dnf install python3 python3-wheel
Zypper Package Manager (Python 2.x)
sudo zypper install python-pip python-setuptools python-wheel
Zypper Package Manager (Python 3.x)
sudo zypper install python3-pip python3-setuptools python3-wheel
Как установить PIP на Raspberry Pi
Как пользователь Raspberry, возможно, вы запускали Rapsbian до того, как появилась официальная и поддерживаемая версия системы. Можно установить другую систему, например, Ubuntu, но в этом случае вам придётся воспользоваться инструкциями по Linux.
Начиная с Rapsbian Jessie, PIP установлен по умолчанию. Это одна из серьёзных причин, чтобы обновиться до Rapsbian Jessie вместо использования Rapsbian Wheezy или Rapsbian Jessie Lite. Так или иначе, на старую версию, все равно можно установить PIP.
sudo apt-get install python-pip
sudo apt-get install python3-pip
На Rapsbian для Python 2.x следует пользоваться командой pip, а для Python 3.x — командой pip3 при использовании команд для PIP.
Как обновить PIP для Python
Пока PIP не слишком часто обновляется самостоятельно, очень важно постоянно иметь свежую версию. Это может иметь значение при исправлении багов, совместимости и дыр в защите.
К счастью, обновление PIP проходит просто и быстро.
python -m pip install -U pip
Для Mac, Linux, или Raspberry Pi:
pip install -U pip
На текущих версиях Linux и Rapsbian Pi следует использовать команду pip3.
Как устанавливать библиотеки Python с помощью PIP
Если PIP работоспособен, можно начинать устанавливать пакеты из PyPI:
pip install package-name
Установка определённой версии вместо новейшей версии пакета:
pip install package-name==1.0.0
Поиск конкретного пакета:
pip search "query"
Просмотр деталей об установленном пакете:
pip show package-name
Список всех установленных пакетов:
pip list
Список всех устаревших пакетов:
pip list --outdated
Обновление устаревших пакетов:
pip install package-name --upgrade
Следует отметить, что старая версия пакета автоматически удаляется при обновлении до новой версии.
Полностью переустановить пакет:
pip install package-name --upgrade --force-reinstall
Полностью удалить пакет:
pip uninstall package-name
Как обновить все пакеты сразу с помощью pip?
Какой командой мне воспользоваться, чтобы с помощью pip обновить все пакеты сразу? Есть ли такая команда вообще? Если есть, зависит ли она от используемой ОС? P.S. Не надо молча давать мне ссылки на какие-то другие сайты. Я и сам умею пользоваться гуглом. Мне нужен четкий ответ на поставленный вопрос.
Отслеживать
задан 8 окт в 9:47
1,602 1 1 золотой знак 6 6 серебряных знаков 24 24 бронзовых знака
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Команда pip freeze выводит все установленные библиотеки в формате
lib1==0.1.0 lib2==3.2.1 .
А команде pip install можно передавать файл как раз в таком формате, соответственно:
pip freeze > requirements.txt pip install -r requirements.txt -U
(эти команды работает на любой системе)
Вот так можно сделать на Linux:
pip freeze > requirements.txt && pip install -r requirements.txt -U