Polski

Python, pip i środowiska wirtualne na VPS z Ubuntu 24.04

2 min
Hosting VPS/VDS

Ubuntu 24.04 zawiera Pythona 3.12, ale instalowanie pakietów zwykłym pip kończy się teraz błędem „externally-managed-environment”. Rozwiązaniem jest izolowanie każdego projektu w osobnym środowisku wirtualnym. Ten poradnik pokazuje, jak przygotować VPS Linux Infrawire, poprawnie zarządzać zależnościami i utrzymać aplikację jako usługę systemd.

📋 Wymagania wstępne

  • Serwer VPS z Ubuntu 24.04 lub Debian 12 i dostępem SSH jako root (adres IP i hasło roota znajdziesz w panelu klienta)
  • Projekt w Pythonie lub prosty skrypt do testów
  • Podstawowa znajomość wiersza poleceń

1. Instalacja Pythona 3, pip i venv

Python 3 jest zwykle zainstalowany, ale pip i moduł venv to osobne pakiety.

Bash
apt update apt install -y python3 python3-pip python3-venv python3-dev build-essential python3 --version pip3 --version

2. Skąd błąd PEP 668

Uruchomienie pip install requests jako root na Ubuntu 24.04 lub Debian 12 wyświetla:

TEXT
error: externally-managed-environment

To zabezpieczenie (PEP 668) chroni przed nadpisaniem plików zarządzanych przez apt i uszkodzeniem narzędzi systemowych. Nie omijaj go opcją --break-system-packages. Skorzystaj z jednej z trzech czystych metod poniżej.

3. Tworzenie środowiska wirtualnego

Środowisko wirtualne to prywatna kopia Pythona i pip dla jednego projektu.

Bash
mkdir -p /opt/myapp && cd /opt/myapp python3 -m venv venv source venv/bin/activate pip install --upgrade pip pip install requests flask gunicorn

Monit zaczyna się teraz od (venv). Opuścisz środowisko poleceniem deactivate.

4. Zarządzanie zależnościami przez requirements.txt

Zamroź dokładne wersje, aby móc odtworzyć projekt identycznie na innym serwerze.

Bash
pip freeze > requirements.txt # Na świeżej maszynie python3 -m venv venv source venv/bin/activate pip install -r requirements.txt

5. Narzędzia wiersza poleceń z pipx

Dla samodzielnych narzędzi (httpie, yt-dlp, black...) pipx tworzy każdemu własne ukryte środowisko wirtualne i udostępnia polecenie globalnie.

Bash
apt install -y pipx pipx ensurepath pipx install httpie

Otwórz potem nową powłokę, aby załadować zaktualizowany PATH. Dla biblioteki, która ma pakiet Debiana, dobrym wyborem jest też apt install python3-requests.

6. Uruchomienie aplikacji jako usługi systemd

Utwórz dedykowanego użytkownika bez uprawnień, a następnie jednostkę, która startuje interpreter ze środowiska wirtualnego (tu Gunicorn obsługujący obiekt Flask o nazwie app w pliku app.py).

Bash
useradd --system --home /opt/myapp --shell /usr/sbin/nologin myapp chown -R myapp:myapp /opt/myapp

Utwórz plik /etc/systemd/system/myapp.service:

INI
1[Unit] 2Description=My Python application 3After=network.target 4 5[Service] 6User=myapp 7WorkingDirectory=/opt/myapp 8ExecStart=/opt/myapp/venv/bin/gunicorn --bind 127.0.0.1:8000 app:app 9Restart=on-failure 10RestartSec=5 11 12[Install] 13WantedBy=multi-user.target
Bash
systemctl daemon-reload systemctl enable --now myapp

Umieść przed portem 8000 reverse proxy, np. nginx, aby udostępnić aplikację w Internecie.

✅ Weryfikacja

Bash
which python # po aktywacji musi wskazywać na /opt/myapp/venv pip list systemctl status myapp --no-pager journalctl -u myapp -n 50 --no-pager curl -I http://127.0.0.1:8000

🔧 Rozwiązywanie problemów

The virtual environment was not created successfully because ensurepip is not available : brakuje pakietu venv. Zainstaluj go poleceniem apt install python3-venv (lub python3.12-venv) i powtórz komendę.

status=203/EXEC w systemd : ścieżka w ExecStart jest błędna albo plik nie jest wykonywalny dla użytkownika usługi. Sprawdź ls -l /opt/myapp/venv/bin/gunicorn oraz uprawnienia ustawione wcześniej.

ModuleNotFoundError tylko pod systemd : usługa używa systemowego Pythona zamiast środowiska wirtualnego. W ExecStart zawsze wywołuj /opt/myapp/venv/bin/python lub plik z venv/bin.

pip: command not found : użyj python3 -m pip albo najpierw aktywuj środowisko wirtualne.


🎉 Twoje projekty w Pythonie są teraz odizolowane, powtarzalne i działają jako niezawodna usługa!

Bądź na bieżąco z najnowszymi ofertami, zniżkami i promocjami specjalnymi.

Zobacz promocje

Używamy plików cookie

Używamy plików cookie analitycznych, aby ulepszać nasz serwis. Nie sprzedajemy danych stronom trzecim. Więcej w polityce prywatności.