dev-blog

Jak włączyć środowisko wirtualne dla projektu Python w Ubuntu

📚 Spis treści


Środowisko wirtualne w Ubuntu

1. Sprawdzenie i instalacja venv

sudo apt update
sudo apt install python3-venv

2. Przejście do katalogu projektu

cd /ścieżka/do/twojego/projektu

3. Tworzenie środowiska wirtualnego

python3 -m venv .venv

Po wykonaniu polecenia powstanie katalog .venv/.
Sprawdź

ls -a

Ustawienia w configach mogą ukrywać ten katalog, więc może nie być widoczny w VSCode.


4. Aktywacja środowiska

source .venv/bin/activate

Po aktywacji terminal pokaże:

(.venv) user@ubuntu:~/projekt$

5. Instalowanie pakietów tylko dla projektu

python -m pip install numpy flask django

Pakiety zostaną zainstalowane wyłącznie w tym środowisku.


6. Dezaktywacja środowiska

deactivate

(Opcjonalnie) Plik requirements.txt

Zapis zależności:

python -m pip freeze > requirements.txt

Instalacja w nowym środowisku:

python -m pip install -r requirements.txt

Ignorowanie środowiska wirtualnego w Git

Katalog środowiska wirtualnego (.venv/) nie powinien być dodawany do repozytorium. Środowisko wirtualne jest zależne od systemu operacyjnego i zawsze może zostać odtworzone na podstawie pliku requirements.txt.

Dodaj do pliku .gitignore:

.venv/

Update pakietów i requirements.txt

Czy musisz tworzyć nowe środowisko po zmianie requirements.txt

Krótko: nie zawsze, ale często warto.


Kiedy NIE tworzyć nowego venv

python -m pip install -r requirements.txt --upgrade

Kiedy tworzyć nowe venv (zalecane)

rm -rf .venv
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt

Best practice zespołowe

DEV (lokalnie)

python -m pip install -r requirements.txt --upgrade

Okresowo:

rm -rf .venv
python3 -m venv .venv
python -m pip install -r requirements.txt

CI / Docker / PROD

Zawsze czyste środowisko

python -m pip install -r requirements.txt

Dlaczego nowe venv jest bezpieczniejsze


Synchronizacja zamiast kasowania środowiska

python -m pip install pip-tools
pip-sync requirements.txt

Uwaga: pip-sync usuwa wszystkie pakiety, których nie ma w requirements.txt.


TL;DR

Zmiana w requirements.txt Nowe venv
Dodanie pakietu
Zmiana wersji ==
Zmiana zakresu ⚠️
Usunięcie pakietu
CI / PROD