Справочник

Python, pip и venv на Ubuntu: как ставить библиотеки

Python в Ubuntu уже стоит: команда python3. Библиотеки через pip ставят не в систему, а в виртуальное окружение — отдельную папку приложения. Без окружения pip в Ubuntu откажется работать с ошибкой externally-managed-environment.

≈ 6 мин чтения
Содержание 8

Что сделать прямо сейчас

Команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

  1. Проверьте Python: python3 --version. Ответ начинается с Python 3.12 в Ubuntu 24.04 или Python 3.14 в Ubuntu 26.04.
  2. Обновите список пакетов: sudo apt update.
  3. Поставьте venv и pip: sudo apt install python3-venv python3-pip. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter. На вопрос Do you want to continue? [Y/n] нажмите Y и Enter.
  4. Создайте виртуальное окружение в папке приложения и включите его — команды ниже.
  5. Ставьте библиотеки командой pip install только во включённом окружении.

Какая версия поставится

UbuntuPythonpipПоддержка Python разработчиками
24.043.12.324.0до октября 2028 года
26.043.14.325.1.1до октября 2030 года

Номера версий взяты со страниц пакетов Ubuntu на 14 октября 2026 года, сроки поддержки — из разбора Хостинг для Python и Node.js. Команда в Ubuntu — python3, внутри включённого окружения работает и python.

Python в Ubuntu ставится вместе с системой: документация Ubuntu Server так и пишет. Пакеты python3-venv и python3-pip нужно поставить самим, они лежат в разделе universe.

Почему pip ругается без окружения

Если набрать pip install вне окружения, pip откажется ставить библиотеку. Первая строка ответа:

error: externally-managed-environment

Так задумано: Python в Ubuntu нужен самой системе, и его библиотеками управляет apt. В Ubuntu лежит файл-метка EXTERNALLY-MANAGED (/usr/lib/python3.12/ в 24.04, /usr/lib/python3.14/ в 26.04). Увидев его, pip не трогает системный Python и предлагает виртуальное окружение. Создайте его — и pip заработает.

Не обходите эту защиту ключами pip и не ставьте библиотеки через sudo pip: чужая версия библиотеки может сломать программы Ubuntu, которые написаны на Python.

Виртуальное окружение venv

Окружение — папка с собственной копией pip и библиотек для одного приложения. У каждого приложения на сервере — своё окружение, и они друг другу не мешают. Перейдите в папку приложения и создайте окружение в подпапке venv:

cd /home/ivan/myapp
python3 -m venv venv

Включите окружение:

source venv/bin/activate

В начале строки ввода появится (venv): теперь python и pip работают внутри окружения. Ставьте библиотеки:

pip install requests

Если у приложения есть файл requirements.txt со списком библиотек, поставьте всё сразу: pip install -r requirements.txt. Выключить окружение — deactivate.

Включать окружение каждый раз не обязательно: можно запускать его Python по полному пути, например /home/ivan/myapp/venv/bin/python app.py. Так и делают в службе.

Как запустить приложение службой

Чтобы приложение на Python работало без перерыва и запускалось само после перезагрузки сервера, сделайте его службой systemd. Создайте файл службы:

sudo nano /etc/systemd/system/myapp.service

Вставьте в файл. Вместо app.py — главный файл вашего приложения; у фреймворков команда запуска своя, она есть в их документации:

[Unit]
Description=Приложение на Python
After=network.target

[Service]
User=ivan
WorkingDirectory=/home/ivan/myapp
ExecStart=/home/ivan/myapp/venv/bin/python app.py
Restart=on-failure

[Install]
WantedBy=multi-user.target

Вместо ivan — ваш пользователь на сервере, вместо /home/ivan/myapp — папка приложения. Сохраните файл: Ctrl+O, Enter, затем Ctrl+X. Включите и запустите службу:

sudo systemctl daemon-reload
sudo systemctl enable --now myapp

Проверьте: sudo systemctl status myapp — в ответе должно быть active (running). Если приложение упадёт, Restart=on-failure перезапустит его. Что приложение писало перед сбоем, покажет sudo journalctl -u myapp. Остальные команды для служб — Команда systemctl.

Посетители пока не видят приложение: оно слушает порт на самом сервере. Поставьте перед ним nginx — настройка в разделе Если сайт — приложение на Node.js или Python инструкции по размещению сайта.

Ошибки и как их исправить

Что видитеЧто делать
error: externally-managed-environmentсоздайте и включите окружение — как
python3 -m venv не создаёт окружение и выдаёт ошибкупоставьте пакет: sudo apt install python3-venv
система не находит команду pythonв Ubuntu команда — python3; python работает во включённом окружении
система не находит команду pipвключите окружение: source venv/bin/activate
502 Bad Gateway в браузереприложение не запущено или слушает другой порт: sudo systemctl status myapp, разбор ошибки
Unable to locate package python3-venvapt не нашёл пакет

Источники

Сверено 14 октября 2026 года.

Что почитать дальше