TGViewer
ServerAdmin.ru ServerAdmin.ru @srv_admin · 32.6K subscribers
Post #4907 10.9K
Я привык для установки python приложений использовать либо пакетный менеджер системы apt, либо пакетный менеджер самого python – pip. Это устаревший подход, который имеет много недостатков. Через пакетный менеджер обычно доступны только наиболее популярные приложения. Их список ограничен. А через pip напрямую ставить неудобно, так как это ломает совместимость с приложениями, установленными через apt. Если уж хочется использовать pip, то надо запускать его в изолированном окружении, что тоже создаёт некоторые неудобства в дальнейшем использовании приложений.

Решил разобраться с этой темой. В настоящий момент в deb системах, в частности, Debian и Ubuntu, для установки python приложений лучше использовать pipx. Он позволяет автоматически устанавливать приложения в изолированном окружении, которые вызываются нативно из командной строки, но при этом не конфликтуют с системными пакетами. Сам pipx живёт в базовом репозитории:

# apt install pipx
# pipx ensurepath
# source ~/.profile

Далее его можно использовать для установки приложений. Покажу на недавнем примере с ansible-cmdb. Он получится показательным для раскрытия темы. Его можно поставить через pipx:

# pipx install ansible-cmdb

Но работать установленный таким образом ansible-cmdb не будет. Это связано с тем, что собранный пакет очень старый и не умеет работать в виртуальном окружении, которое создаёт pipx. Последний создаёт символьные ссылки с именем приложения, а сами приложения размещает отдельно в виртуальном окружении. А ansible-cmdb ищет свои ресурсы по жёстко привязанным путям к тому месту, откуда его запустили. С современным приложениями такой проблемы не будет.

В связи с этим нам понадобится ещё одно приложение для работы с пакетами и виртуальными окружениями python – uv. Он, как и pipx, работает в изолированном окружении и не пересекается с системными пакетами. Если pipx используют для установки готовых приложений, то uv для установки зависимостей и создания виртуальных окружений.

Сам uv ставим через pipx:

# pipx install uv

Пример установки зависимостей через uv:

# uv pip install -r requirements.txt

А теперь возвращаемся к ansible-cmdb и запускаем его в виртуальном окружении через uv:

# uv venv .venv
# source .venv/bin/activate
# uv pip install ansible-cmdb

Проверяем:

# ansible-cmdb --help

Теперь ansible-cmdb будет нормально работать напрямую из консоли. Принципиальной разницы в эксплуатации не будет с тем, что я предложил в своей заметке через:

# pip install ansible-cmdb --break-system-packages

Если это всё используется в отдельной виртуалке или контейнере. Но в целом правильно запускать именно так, как я описал в текущей заметке. Это не будет ломать совместимость с системными пакетами и другими python приложениями.

📌 Резюмирую:
◽️pipx используем для установки современных python приложений;
◽️uv для установки зависимостей, библиотек и создания виртуальных окружений в том числе для запуска старых приложений.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#debian #python
  • 👍 182
  • 👎 9
More from @srv_admin
  1. Sep 24, 2026Траблшутинг - мастхэв компетенция для инженера В Rebrain траблшутинги проводят уже несколь…
  2. Sep 23, 2026Очередная подборка статей авторов, которые согласились в ней участвовать. Кто не понимает,…
  3. Sep 23, 2026Контейнеры в одном инструменте, виртуалки — в другом, частное облако — вообще отдельная ис…
  4. Sep 23, 2026Расскажу тем, кто не знает, и напомню тем, кто забыл, как я. Не надо в Proxmox в LXC конте…
  5. Sep 22, 2026Недавно случайно заметил любопытную информацию на тему Proxmox VE и новой функциональности…
  6. Sep 22, 2026✔️ Сети для всех — сообщество для тех, кто развивается в сетевом и системном администриров…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →