Featured image of post Django Virtual Environment Management

Django Virtual Environment Management

Gambaran tentang virtual environment management di Python, alasan pentingnya menggunakan virtual environment, cara membuat dan menggunakan .venv, serta fungsi requirements.txt untuk memastikan project yang dibuat dapat direproduksi di server berbeda.

Kenapa ada Virtual Environments?

Sebelum mulai, kita perlu pahami masalah yang ingin diselesaikan oleh Virtual Environments.

Ketika menginstall Python package secara global (tanpa virtual environment), instalasi Python package itu ditempatkan di direktori Python sistem. Sekarang bayangkan jika:

  • Project A menggunakan Django==4.2
  • Project B menggunakan Django==5.1

Kita tidak bisa memiliki kedua versi yang diinstal secara global pada saat yang bersamaan. Salah satu akan menimpa yang lain. Virtual environments mengatasi ini dengan memberikan setiap project instalasi Python dan direktori paket yang isolated / terisolasi.

Server Kita
├── System Python (global)
│   └── site-packages/  ← dibagikan, rawan konflik
└── Projects/
    ├── project-a/
    │   └── .venv/
    │       └── site-packages/  ← Django 4.2 berada di sini
    └── project-b/
        └── .venv/
            └── site-packages/  ← Django 5.1 berada di sini

Langkah 1: Buat Virtual Environment

Masuk ke folder project kita dan jalankan:

1
2
3
4
5
6
# Buat folder untuk project kita terlebih dahulu
mkdir my-drf-project
cd my-drf-project

# Buat virtual environment
python3 -m venv .venv

Yang terjadi di sini adalah:

  • python3 -m venv menjalankan modul venv yang sudah terpasang dalam library standar Python
  • .venv adalah nama folder yang akan menyimpan environment terisolasi (awalan titik menyembunyikannya sesuai conventiont)

Struktur folder kita sekarang terlihat seperti:

my-drf-project/
└── .venv/
    ├── bin/          ← file executable (python, pip, dll.) di Linux/Mac
    ├── lib/          ← site-packages terisolasi
    └── pyvenv.cfg    ← metadata tentang environment

Di Windows, bin/ disebut Scripts/.

Langkah 2: Aktivasi Virtual Environment

1
2
3
4
5
6
7
8
# Linux / macOS
source .venv/bin/activate

# Windows (Command Prompt)
.venv\Scripts\activate.bat

# Windows (PowerShell)
.venv\Scripts\Activate.ps1

Setelah aktivasi, prompt terminal kita menjadi:

1
(.venv) stevelaurensius@machine:~/my-drf-project$

Awalan (.venv) menandakan bahwa environment telah aktif. Sekarang perintah python atau pip apa pun menggunakan isolated environment, bukan Python yang ada di sistem.

Kita dapat verifikasi dengan cara:

1
which python   # Seharusnya responnya adalah .venv/bin/python, bukan /usr/bin/python

Langkah 3: Install Django dan DRF

Pada virtual environment:

1
pip install django djangorestframework

Yang diinstall adalah:

  • django - framework web
  • djangorestframework - DRF, yang berdiri di atas Django

Untuk memverifikasi:

1
2
python -m django --version     # misalnya, 5.1.x
pip show djangorestframework   # menampilkan versi, lokasi, dependensi

Langkah 4: Buat dan Kelola requirements.txt

requirements.txt adalah file teks biasa yang berisi setiap paket yang project kita butuhkan beserta versi spefisiknya. File ini berfungsi sebagai blueprint yang dapat direproduksi sehingga siapa pun (atau server apa pun) dapat mereplika ulang environment kita secara persis.

Buat requirements.txt

1
pip freeze > requirements.txt

pip freeze mencantumkan semua paket yang dipasang dengan versi spesifik. > menjadikan output itu ke dalam file. Hasilnya akan terlihat kira-kira seperti:

asgiref==3.8.1
Django==5.1.4
djangorestframework==3.15.2
sqlparse==0.5.3

Cara menggunakan file requirements.txt (di mesin lain atau environment baru)

1
pip install -r requirements.txt

Update requirements.txt

Setiap kali kita memasang paket baru, buat ulang file:

1
2
pip install package-baru-apapun
pip freeze > requirements.txt

Cara nonaktifkan environment jika setelah selesai

1
deactivate

Mengapa Virtual Environment Penting untuk Kode Production

Berikut adalah alasan mengapa isolasi penting, bukan sekedar good habit:

ConcernPotensi masalah jika tidak menggunakan Virtual Environment
Dependency ConflictsDua project membutuhkan versi berbeda dari library yang sama - salah satu rusak
ReproducibilityOrang lain clone repo kita tetapi mendapatkan versi package berbeda, menyebabkan adanya potensi bug
DeploymentServer production kita menggunakan versi package yang lebih baru yang tidak sesuai dengan kita butuhkan
Pipeline CI/CDAutomated test runners membutuhkan environment yang clean dan sudah terbukti berjalan dengan baik

Kombinasi requirements.txt dan virtual environment adalah cara kita untuk memberikan informasi: “This exact set of packages, at these exact versions, is what makes this project work.”

Cheat Sheet

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# Buat Virtual Environment
python3 -m venv .venv

# Aktivasi Virtual Environment (Linux/macOS)
source .venv/bin/activate

# Install Packages
pip install django djangorestframework

# Snapshot Dependencies
pip freeze > requirements.txt

# Restore Dependencies (di server lain)
pip install -r requirements.txt

# Nonaktifkan Virtual Environment
deactivate

Kebiasaan Baik Yang Perlu Dimulai Sejak Dini

Tambahkan .venv/ ke .gitignore segera. Kita seharusnya tidak pernah melakukan commit folder virtual environment ke Git, karena ukurannya besar, platform-specific, dan sudah diwakilkan oleh file requirements.txt.

1
echo ".venv/" >> .gitignore
Dibawah Lisensi CC BY-NC-SA 4.0
Dibangun dengan Hugo
Tema Stack dirancang oleh Jimmy