pip — стандартный менеджер пакетов Python: он скачивает библиотеки из каталога PyPI (Python Package Index) и устанавливает их в конкретный интерпретатор Python. Ниже — как проверить, есть ли pip, как его поставить в Windows, macOS и Linux, как работать через виртуальное окружение и какие команды нужны каждый день.
Содержание
- Четыре понятия, которые путают
- Шаг 1. Проверить, установлен ли pip
- Шаг 2. Если pip нет — установить под свою ОС
- Шаг 3. Создать виртуальное окружение
- Базовые команды pip на одном примере
- Ошибка externally-managed-environment и как ее исправить
- Если не получилось
- Выводы
- Где применяется / связь с практикой
- FAQ
Команды и вывод проверены 23.09.2026 в двух средах: Python 3.14.7 с pip 26.2.1 (официальный образ python:3.14-slim) и Ubuntu 24.04 с системным Python 3.12.3 и pip 24.0. Номера версий у вас будут другими — это нормально.
Четыре понятия, которые путают
| Понятие | Что это | Пример |
|---|---|---|
| PyPI | Каталог пакетов в интернете, откуда pip берет файлы | requests, numpy |
| pip | Программа-установщик, привязанная к одному интерпретатору | python -m pip install requests |
| venv | Отдельная папка-окружение со своим Python и своими пакетами | .venv/ в папке проекта |
| Системный менеджер пакетов | Установщик ОС, ставит пакеты для всей системы | apt install python3-requests |
Главное следствие: у каждого установленного Python свой набор пакетов. Если на компьютере два Python, пакет, поставленный «не тем» pip, не будет виден вашей программе. Поэтому дальше везде используется форма python -m pip: она вызывает pip именно того интерпретатора, который вы запускаете.
Шаг 1. Проверить, установлен ли pip
python --version
python -m pip --version
В образе Python 3.14 результат такой:
Python 3.14.7
pip 26.2.1 from /usr/local/lib/python3.14/site-packages/pip (python 3.14)
Вторая строка отвечает на два вопроса сразу: pip есть и он относится к Python 3.14. В Linux и macOS интерпретатор часто называется python3, а не python — тогда команды те же, но с python3. В Windows работает команда py: py -m pip --version. С Python 3.14 python.org рекомендует для Windows новый Python install manager (классический установщик объявлен устаревшим), и он намеренно не создает глобальную команду pip — поэтому голое pip там может не находиться, а py -m pip и python -m pip работают.
Шаг 2. Если pip нет — установить под свою ОС
Установщики Python с python.org для Windows и macOS ставят pip вместе с интерпретатором (в Windows с install manager — как модуль для py -m pip, без отдельной команды pip). Если его нет, способ зависит от того, откуда взят Python:
| Откуда Python | Как получить pip |
|---|---|
| Установщик python.org (Windows, macOS) | python -m ensurepip --upgrade (в Windows — py -m ensurepip --upgrade) |
| Homebrew на macOS | brew install python — pip идет в комплекте, команда pip3 |
| Debian, Ubuntu | sudo apt install python3-pip python3-venv |
| Fedora, RHEL и производные | sudo dnf install python3-pip |
| Ничего из этого не помогло | скрипт get-pip.py с сайта PyPA (bootstrap.pypa.io), запуск python get-pip.py |
ensurepip — модуль стандартной библиотеки, который ставит встроенную копию pip без интернета. Но в Debian и Ubuntu в системном Python его нет — он приезжает вместе с пакетом python3-venv, и прогон на Ubuntu 24.04 это показывает:
$ python3 -m pip --version
/usr/bin/python3: No module named pip
$ python3 -m ensurepip
/usr/bin/python3: No module named ensurepip
После sudo apt install python3-pip python3-venv та же проверка дает pip 24.0 from /usr/lib/python3/dist-packages/pip (python 3.12). Команда easy_install pip из старых инструкций больше не работает: easy_install удален из setuptools.
Шаг 3. Создать виртуальное окружение
Рекомендуемый способ ставить библиотеки для проекта — не в систему, а в виртуальное окружение внутри папки проекта:
python -m venv .venv
. .venv/bin/activate
python -m pip --version
pip 26.2.1 from /work/.venv/lib/python3.14/site-packages/pip (python 3.14)
Путь в выводе теперь ведет в .venv — значит, пакеты пойдут в окружение проекта, а не в систему. В Windows активация другая: .venv\Scripts\activate в cmd или .venv\Scripts\Activate.ps1 в PowerShell. Выйти из окружения — команда deactivate. Папку .venv в git не добавляют: ее пересоздают из списка зависимостей.
Базовые команды pip на одном примере
Полный сценарий: поставить библиотеку, посмотреть список, зафиксировать версии, удалить и восстановить. Выполняется в активированном окружении:
python -m pip install requests==2.32.3
python -m pip list
python -m pip freeze > requirements.txt
python -m pip uninstall -y requests
python -m pip install -r requirements.txt
python -m pip check
Что видно по шагам. install вместе с requests ставит его зависимости:
Successfully installed certifi-2026.7.22 charset-normalizer-3.5.1 idna-3.20 requests-2.32.3 urllib3-2.8.0
pip list показывает все пакеты окружения, включая сам pip:
Package Version
------------------ ---------
certifi 2026.7.22
charset-normalizer 3.5.1
idna 3.20
pip 26.2.1
requests 2.32.3
urllib3 2.8.0
pip freeze пишет те же пакеты в формате имя==версия и без pip — это файл, по которому окружение можно собрать заново. uninstall -y requests удаляет только requests: его зависимости остаются, поэтому повторная установка из requirements.txt доставила один пакет. pip check в конце ответил No broken requirements found. — конфликтов версий нет.
| Задача | Команда |
|---|---|
| Установить последнюю версию | python -m pip install requests |
| Установить точную версию | python -m pip install requests==2.32.3 |
| Диапазон версий | python -m pip install "requests>=2.32,<3" |
| Обновить пакет | python -m pip install --upgrade requests |
| Обновить сам pip | python -m pip install --upgrade pip |
| Сведения о пакете | python -m pip show requests |
| Список пакетов | python -m pip list |
| Зафиксировать версии | python -m pip freeze > requirements.txt |
| Установить из файла | python -m pip install -r requirements.txt |
| Удалить пакет | python -m pip uninstall requests |
| Проверить совместимость | python -m pip check |
Кавычки в строке с диапазоном нужны, чтобы оболочка не приняла < и > за перенаправление ввода-вывода.
Команда pip search из старых статей не работает: PyPI отключил этот поиск. Прогон на pip 26.2.1 заканчивается ошибкой RuntimeError: PyPI no longer supports 'pip search' (or XML-RPC search). Please use https://pypi.org/search (via a browser) instead. Искать пакеты нужно на сайте PyPI в браузере.
Ошибка externally-managed-environment и как ее исправить
Во многих современных Linux-дистрибутивах (например, Ubuntu 24.04 и Debian 12), а также в Python из Homebrew на macOS pip по умолчанию не дает ставить пакеты в системный Python. Неверный путь — ставить пакет прямо в систему:
pip3 install requests
Результат на Ubuntu 24.04 (фрагмент):
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
Это не поломка, а защита по стандарту PEP 668: системный Python используют утилиты самой ОС (или пакеты Homebrew), и пакет из PyPI может подменить нужную им версию библиотеки. Исправление — виртуальное окружение:
python3 -m venv .venv
. .venv/bin/activate
python -m pip install requests
python -c "import requests; print(requests.__version__)"
В прогоне последняя строка вывела 2.34.2 — установка прошла. Для консольных программ (не библиотек проекта) удобнее pipx: он сам создает окружение под каждую программу. Флаг --break-system-packages снимает запрет, но может сломать системные утилиты — в учебных и рабочих проектах он не нужен.
Если не получилось
| Симптом | Причина | Что делать |
|---|---|---|
pip: command not found (в Windows — команда не распознается) |
pip не установлен или не в PATH | Вызывать python -m pip; если модуля нет — шаг 2 |
No module named pip |
У этого интерпретатора нет pip | ensurepip или пакет python3-pip в Linux |
No matching distribution found for ... |
Опечатка в имени или нет сборки под вашу версию Python | Сверить имя на PyPI и версии, которые поддерживает пакет |
Пакет установлен, а import падает |
Пакет ушел в другой Python | Сравнить путь из python -m pip --version и запускать программу тем же Python |
Permission denied при установке |
Попытка писать в системные каталоги | Не использовать sudo pip, работать в venv |
Про безопасность: pip выполняет код при сборке пакетов из исходников и доверяет имени, которое вы ввели. Поддельные пакеты с похожими названиями (reqeusts вместо requests) — известный прием атак, поэтому имя стоит копировать со страницы проекта. В рабочих проектах версии фиксируют в requirements.txt, а для строгой проверки есть режим --require-hashes: он требует хеш у каждого пакета в файле. pip freeze хешей не пишет — их добавляют отдельно (например, python -m pip hash <файл> или инструментом pip-tools с флагом --generate-hashes).
Выводы
- pip ставит пакеты в конкретный интерпретатор; форма
python -m pipубирает путаницу между несколькими Python. - Проверка —
python -m pip --version; если pip нет, способ установки зависит от источника Python:ensurepip, Homebrew или пакетpython3-pipв Linux. - Библиотеки проекта ставят в виртуальное окружение
venv, а версии фиксируют черезpip freeze > requirements.txt. - Ошибка externally-managed-environment — защита системного Python по PEP 668; решение — venv или pipx, а не
sudo pip. pip searchиeasy_installиз старых инструкций больше не работают.
Где применяется / связь с практикой
Освойте тему на практике
Установка пакетов — первое, с чем сталкиваешься при любой задаче на Python: веб-запросы, анализ данных, боты, автоматизация. Если хочется пройти путь от окружения и зависимостей до собственных программ с разбором заданий, посмотрите курс Python Developer. Basic. Отдельные темы можно попробовать на бесплатных открытых уроках Otus.
FAQ
Чем pip отличается от pip3?
Это разные имена одной программы: pip3 явно указывает на Python 3, а pip может указывать на любой установленный Python. Надежнее вызывать python -m pip нужным интерпретатором.
Можно ли поставить пакет без интернета?
Да, если заранее скачать файлы: python -m pip download -r requirements.txt -d wheels на машине с сетью, затем python -m pip install --no-index --find-links wheels -r requirements.txt. Wheel — готовый формат пакета, который не нужно собирать при установке. Скачивать нужно на машине с той же ОС, архитектурой и версией Python: часть wheel-файлов собрана под конкретную платформу (в прогоне charset_normalizer скачался как файл для cp314 и Linux aarch64).
Нужен ли pip, если я пользуюсь conda или uv?
У conda свой менеджер пакетов и свои окружения, у uv — собственный быстрый установщик с похожими командами. pip при этом остается стандартным установщиком Python-сообщества (PyPA): он идет с официальными сборками python.org, а в Debian и Ubuntu ставится пакетом python3-pip.



