Перейти к содержанию

pip — управление Python-пакетами (в контексте DevOps)

pip — пакетный менеджер Python. Он используется для установки, обновления и удаления Python-пакетов из Python Package Index (PyPI) и других источников.


Связь Python и pip

На машине может быть установлено несколько версий Python, и у каждой может быть свой pip.

Поэтому предпочтительно использовать:

python -m pip

или вне виртуального окружения:

python3 -m pip

вместо:

pip
pip3

Так явно указывается, какой Python должен запустить pip.

Например:

python
  │
  └── -m pip
         │
         └── pip именно этого Python

1. Проверка Python

Перед созданием окружения проверить используемый Python:

which python3

Проверить версию:

python3 --version

Показать все python3, найденные через $PATH:

which -a python3

Например:

/opt/homebrew/bin/python3
/usr/bin/python3

Первый найденный путь используется при выполнении:

python3

2. Проверка pip

Проверить версию pip, связанную с текущим Python:

python3 -m pip --version

Пример:

pip 25.x from /opt/homebrew/lib/python3.x/site-packages/pip (python 3.x)

Проверить расположение отдельной команды pip:

which pip

Показать все найденные варианты:

which -a pip

3. Создание виртуального окружения

Для каждого Python-проекта рекомендуется использовать отдельное виртуальное окружение.

Создать:

python3 -m venv venv

Структура:

project/
└── venv/
    ├── bin/
    │   ├── python
    │   ├── python3
    │   ├── pip
    │   └── ...
    ├── include/
    ├── lib/
    └── pyvenv.cfg

Активировать:

source venv/bin/activate

После активации:

(venv) user@host project %

4. Проверка виртуального окружения

После активации обязательно проверить:

which python

Ожидаемый результат:

/path/to/project/venv/bin/python

Проверить:

python --version

Проверить pip:

python -m pip --version

Также можно проверить:

which pip

Ожидаемый путь:

/path/to/project/venv/bin/pip

Таким образом:

Homebrew Python
      │
      │ python3 -m venv venv
      ▼
Virtual Environment
      │
      ├── python
      ├── pip
      ├── ansible
      ├── molecule
      └── другие зависимости

5. Обновление pip

После создания нового venv рекомендуется обновить pip:

python -m pip install --upgrade pip

Сокращённый вариант:

python -m pip install -U pip

Где:

-U

эквивалентно:

--upgrade

Проверить версию:

python -m pip --version

При необходимости обновить основные инструменты сборки Python-пакетов:

python -m pip install --upgrade pip setuptools wheel

6. Установка пакета

Общий синтаксис:

python -m pip install <package>

Например:

python -m pip install ansible

Установить Molecule:

python -m pip install molecule

Установить ansible-lint:

python -m pip install ansible-lint

Установить Python SDK для Docker:

python -m pip install docker

Note

Python-пакет docker — это Docker SDK for Python.

Он не устанавливает Docker Engine или Docker Desktop.


7. Установка нескольких пакетов

Можно установить несколько пакетов одной командой:

python -m pip install ansible molecule ansible-lint docker

Для окружения Ansible + Molecule:

python -m pip install \
    ansible \
    molecule \
    ansible-lint \
    docker

8. Установка последней доступной версии

Если версия явно не указана:

python -m pip install molecule

pip выбирает актуальную версию пакета, совместимую с текущим Python и установленными зависимостями.

Для уже установленного пакета использовать:

python -m pip install --upgrade molecule

или:

python -m pip install -U molecule

9. Просмотр доступных версий

Посмотреть версии пакета, доступные через индекс:

python -m pip index versions molecule

Для Ansible:

python -m pip index versions ansible

Для ansible-core:

python -m pip index versions ansible-core

Для Docker SDK:

python -m pip index versions docker

10. Установка конкретной версии

Указать версию через ==:

python -m pip install molecule==<version>

Например:

python -m pip install ansible==<version>

Это особенно полезно для воспроизводимых окружений и CI/CD.


11. Просмотр установленных пакетов

Показать все пакеты текущего Python-окружения:

python -m pip list

Пример:

Package       Version
------------- -------
ansible       ...
ansible-core  ...
ansible-lint  ...
docker        ...
molecule      ...
pip           ...

12. Информация о конкретном пакете

Например:

python -m pip show molecule

Ansible:

python -m pip show ansible

Docker SDK:

python -m pip show docker

Команда показывает:

  • версию;
  • расположение пакета;
  • зависимости;
  • пакеты, которые зависят от него.

13. Поиск устаревших пакетов

Показать пакеты, для которых существуют более новые версии:

python -m pip list --outdated

Пример:

Package       Version    Latest
------------- ---------- ----------
molecule      X.Y        X.Z
docker        A.B        A.C

14. Обновление одного пакета

Полная форма:

python -m pip install --upgrade molecule

Короткая:

python -m pip install -U molecule

15. Обновление основных DevOps Python-пакетов

Например:

python -m pip install --upgrade \
    ansible \
    molecule \
    ansible-lint \
    docker

После обновления проверить зависимости:

python -m pip check

16. Проверка зависимостей

Проверить, удовлетворены ли зависимости установленных пакетов:

python -m pip check

Если проблем нет:

No broken requirements found.

Эту проверку полезно выполнять после обновления пакетов.


17. Удаление пакета

Удалить пакет:

python -m pip uninstall molecule

Перед удалением pip запросит подтверждение.

Удалить без подтверждения:

python -m pip uninstall -y molecule

Удалить несколько:

python -m pip uninstall ansible molecule ansible-lint docker

18. Фиксация текущего окружения

Сохранить установленные пакеты и их точные версии:

python -m pip freeze

Записать результат в файл:

python -m pip freeze > requirements.txt

Посмотреть файл:

cat requirements.txt

Пример:

ansible==...
ansible-core==...
ansible-lint==...
docker==...
molecule==...

19. Восстановление окружения из requirements.txt

Создать новое виртуальное окружение:

python3 -m venv venv

Активировать:

source venv/bin/activate

Обновить pip:

python -m pip install --upgrade pip

Установить зависимости:

python -m pip install -r requirements.txt

Проверить:

python -m pip check

20. Свежие версии и зафиксированные версии

Есть два разных подхода.

Получить свежие версии

python -m pip install ansible molecule ansible-lint docker

или обновить существующие:

python -m pip install -U ansible molecule ansible-lint docker

Это означает:

Хочу актуальные совместимые версии

Воспроизвести существующее окружение

python -m pip install -r requirements.txt

Это означает:

Хочу версии, зафиксированные для проекта

Для production и CI/CD воспроизводимость обычно важнее постоянной установки самых новых версий.


21. pip и Ansible Galaxy — не одно и то же

Через pip устанавливаются Python-пакеты:

python -m pip install ansible
python -m pip install molecule
python -m pip install ansible-lint
python -m pip install docker

Это пакеты из Python-экосистемы:

PyPI
 │
 └── pip
      ├── ansible
      ├── molecule
      ├── ansible-lint
      └── docker

Ansible Collections устанавливаются через ansible-galaxy.

Например:

ansible-galaxy collection install community.docker

Обновить:

ansible-galaxy collection install community.docker --upgrade

Показать установленные Collections:

ansible-galaxy collection list

Схематично:

Python / PyPI
│
└── pip
    ├── ansible
    ├── molecule
    ├── ansible-lint
    └── docker


Ansible Galaxy
│
└── ansible-galaxy
    └── community.docker

22. requirements.yml для Ansible Galaxy

Ansible-зависимости можно описать отдельно:

requirements.yml
---
collections:
  - name: community.docker

Установить:

ansible-galaxy collection install -r requirements.yml

Таким образом можно хранить отдельно:

project/
├── requirements.txt
└── requirements.yml

Где:

requirements.txt
       │
       └── Python / pip dependencies


requirements.yml
       │
       └── Ansible Galaxy dependencies

23. Полное создание Ansible + Molecule окружения с нуля

Проверить Python:

which python3
python3 --version

Создать каталог проекта:

mkdir docker_role
cd docker_role

Создать виртуальное окружение:

python3 -m venv venv

Активировать:

source venv/bin/activate

Проверить:

which python
python --version
python -m pip --version

Обновить pip:

python -m pip install --upgrade pip

Установить инструменты:

python -m pip install \
    ansible \
    molecule \
    ansible-lint \
    docker

Установить Docker Collection:

ansible-galaxy collection install community.docker

Проверить версии:

ansible --version
molecule --version
ansible-lint --version

Посмотреть Python-пакеты:

python -m pip list

Проверить зависимости:

python -m pip check

Посмотреть устаревшие пакеты:

python -m pip list --outdated

24. Обновление существующего окружения

Активировать:

source venv/bin/activate

Обновить pip:

python -m pip install --upgrade pip

Посмотреть устаревшие пакеты:

python -m pip list --outdated

Обновить основные инструменты:

python -m pip install --upgrade \
    ansible \
    molecule \
    ansible-lint \
    docker

Обновить Ansible Collection:

ansible-galaxy collection install community.docker --upgrade

Проверить зависимости:

python -m pip check

Проверить версии:

ansible --version
molecule --version
ansible-lint --version

25. Выход из виртуального окружения

Выполнить:

deactivate

После этого команды снова будут искаться в обычном $PATH системы.


Шпаргалка

Задача Команда
Проверить pip python -m pip --version
Обновить pip python -m pip install -U pip
Установить пакет python -m pip install <package>
Установить несколько python -m pip install <package1> <package2>
Обновить пакет python -m pip install -U <package>
Посмотреть пакеты python -m pip list
Найти устаревшие python -m pip list --outdated
Информация о пакете python -m pip show <package>
Доступные версии python -m pip index versions <package>
Удалить пакет python -m pip uninstall <package>
Проверить зависимости python -m pip check
Зафиксировать окружение python -m pip freeze > requirements.txt
Установить из файла python -m pip install -r requirements.txt
Создать venv python3 -m venv venv
Активировать venv source venv/bin/activate
Выйти из venv deactivate

Главное

При работе с проектом придерживаться последовательности:

Homebrew
   │
   └── устанавливает Python
            │
            ▼
         Python
            │
            │ python3 -m venv venv
            ▼
           venv
            │
            ├── python
            └── pip
                 │
                 ├── ansible
                 ├── molecule
                 ├── ansible-lint
                 └── docker

Для Python-зависимостей:

python -m pip ...

Для Ansible Collections:

ansible-galaxy ...

Для системных программ на macOS:

brew ...

Это три разных уровня управления зависимостями:

brew            → системные инструменты
pip             → Python-пакеты
ansible-galaxy  → Ansible Collections / Roles

Последняя проверка 02.10.2026