Ś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.
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
/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.