Deployment aplikacji Średnio zaawansowany 50 min

Środowisko Python na serwerze

Utworzysz izolowane środowisko Python na serwerze, zainstalujesz zależności i sprawdzisz, czy aplikacja używa właściwego interpretera oraz spójnego zestawu pakietów.

Wróć do listy lekcji

1. Krótka teoria

Systemowy Python jest używany także przez narzędzia systemu, dlatego instalowanie pakietów aplikacji globalnym pip może powodować konflikty. Moduł venv tworzy izolowane środowisko z własnym interpreterem i katalogiem pakietów. Dla przykładowej aplikacji może to być /opt/example-app/venv. Po aktywacji powłoka wskazuje pliki wykonywalne z tego środowiska, ale skrypty automatyczne i systemd nie powinny polegać na aktywacji. Mogą wywoływać bezpośrednio /opt/example-app/venv/bin/python lub program z katalogu bin. Polecenie python -m pip jednoznacznie uruchamia pip powiązany z wybranym interpreterem. Po instalacji z requirements.txt warto wykonać pip check, aby znaleźć niespełnione lub sprzeczne zależności. Katalog kodu i venv musi mieć właściciela oraz uprawnienia pozwalające dedykowanemu użytkownikowi czytać kod i uruchamiać pliki. Odtwarzalność oznacza, że na świeżym serwerze można utworzyć nowe venv i zainstalować ten sam kontrolowany zestaw zależności, zamiast kopiować przypadkowy stan z komputera.

2. Przykłady komend

python3 -m venv /opt/example-app/venv

Tworzy środowisko wirtualne dla aplikacji.

$ python3 -m venv /opt/example-app/venv
source /opt/example-app/venv/bin/activate

Aktywuje venv w bieżącej sesji powłoki.

$ source /opt/example-app/venv/bin/activate
which python

Pokazuje interpreter wybierany po wpisaniu python.

$ which python
/opt/example-app/venv/bin/python
python -m pip install -r /opt/example-app/requirements.txt

Instaluje zależności przy użyciu pip powiązanego z aktywnym interpreterem.

$ python -m pip install -r /opt/example-app/requirements.txt
python -m pip check

Sprawdza zgodność zainstalowanych zależności.

$ python -m pip check
No broken requirements found.
sudo chown -R example-app:example-app /opt/example-app

Ustawia właściciela katalogu aplikacji i jego zawartości.

$ sudo chown -R example-app:example-app /opt/example-app

3. Zadanie praktyczne

W katalogu laboratoryjnym odpowiadającym /opt/example-app utwórz venv poleceniem python3 -m venv /opt/example-app/venv. Aktywuj je, sprawdź wynik which python i python -m pip --version, a następnie zainstaluj zależności z requirements.txt. Uruchom python -m pip check. Na końcu wyjdź z venv poleceniem deactivate i porównaj ścieżkę interpretera. Jeżeli ćwiczysz bez uprawnień do /opt, odtwórz taką samą strukturę w swoim katalogu laboratoryjnym.

4. Typowe błędy

  • Instalowanie pakietów aplikacji globalnie do systemowego Pythona.
  • Uruchamianie zwykłego pip bez sprawdzenia, z którym interpreterem jest powiązany.
  • Kopiowanie gotowego venv między serwerami zamiast odtworzenia go z requirements.txt.
  • Nadawanie całemu katalogowi aplikacji zbyt szerokich uprawnień.
  • Zakładanie, że usługa systemd automatycznie aktywuje venv.
  • Pomijanie pip check po instalacji lub aktualizacji zależności.

5. Podsumowanie

Venv izoluje zależności aplikacji od systemowego Pythona. Środowisko tworzy się przez python3 -m venv, a właściwy interpreter można potwierdzić przez which python. Instalacja przez python -m pip ogranicza ryzyko użycia niewłaściwego pip, a pip check sprawdza spójność pakietów. W produkcji proces może bezpośrednio używać programu z katalogu venv bez aktywowania go w powłoce.

Flow nauki
  1. Teoria
  2. Przykład
  3. Ćwiczenie
  4. Quiz
  5. Praktyka
  6. Podsumowanie