Panduan Dasar Virtual Environment (venv) di Python
Pengantar
Menggunakan virtual environment adalah salah satu best practice saat bekerja dengan Python.
Global Package
Sebuah skrip Python biasanya memiliki dependency ke package-package luar yg perlu diinstall. Kita bisa saja install package tersebut secara global, sehingga semua proyek/skrip Python yg hendak dijalankan, akan selalu menggunakan package yang diinstall global tersebut.
Dependency Conflict
Masalah muncul karena setiap package memiliki versi. Misalnya, kita install versi 2 untuk Package A secara global, maka semua skrip di komputer dipaksa menggunakan versi 2 tersebut.
Masalah ini disebut "Dependency Conflict" (konflik dependensi).
Bagaimana kalau proyek lama kita perlu versi 1.5, sementara proyek baru butuh fitur di versi 2.0? Memperbarui satu proyek berarti merusak proyek lainnya. Di sinilah keadaan mulai jadi ribet.
Virtual Environment
Solusinya, pakai virtual environment. Maksudnya, setiap proyek dijalankan di suatu virtual environment yang terisolasi dari proyek lainnya.
Mari kita bahas lebih lanjut.
Tanpa Virtual Environment vs Pakai Virtual Environment
Contoh:
- Proyek A membutuhkan
requestsversi 2.20. - Proyek B membutuhkan fitur baru di
requestsversi 2.31.
Mengupdate library secara global akan merusak salah satu proyek. venv menyelesaikan ini dengan memberikan kotak perkakas pribadi untuk setiap proyek secara terisolasi.
Dengan menggunakan virtual environment, setiap project punya:
- Python interpreter sendiri
- Folder package sendiri
- Dependency yang tidak saling mengganggu
| Aspek | Tanpa Virtual Environment | Dengan Virtual Environment (venv) |
|---|---|---|
| Lokasi install package | Global (satu untuk semua project) | Lokal (per project) |
| Isolasi dependency | ❌ Tidak ada | ✅ Terisolasi per project |
| Konflik versi package | ❌ Sangat mungkin terjadi | ✅ Tidak terjadi |
| Contoh kasus | Update package bisa merusak project lama | Setiap project bebas pakai versi berbeda |
| Kebersihan environment | ❌ Cepat berantakan | ✅ Tetap rapi |
| Risiko merusak project lain | ❌ Tinggi | ✅ Tidak ada |
| Setup awal | ✅ Lebih cepat (tanpa setup) | ⚠️ Perlu buat & activate venv |
| Workflow | Sederhana tapi berisiko | Sedikit langkah tambahan tapi aman |
| Skalabilitas | ❌ Buruk untuk banyak project | ✅ Sangat cocok untuk banyak project |
| Best practice | ❌ Tidak direkomendasikan | ✅ Standar industri |
Cara Pakai venv
Workflow-nya:
- Masuk folder project
- Activate venv
- Kerja (install, run, dll)
- Tutup terminal / deactivate venv
1. Membuat venv
python -m venv venv
Ini akan membuat folder venv/ berisi:
- Python interpreter
- Library folder
Sangat disarankan: dijalankan di dalam folder proyek. Sehingga, folder baru venv/ dibuat di dalam proyek.
Bisa. Sebenarnya command-nya begini:python -m venv <nama_folder>.
Tapi, sangat disarankan tetap pakai venv (atau yg sering dipakai lainnya, misalnya; .venv).
Karena, ketika pakai nama venv, VS Code bisa langsung mengenalinya sebagai Python virtual environment.
.gitignore folder venv
Jangan lupa ya, kalau kamu pakai git, ignore folder yg dipakai untuk virtual environment, biar nggak ikut ke-commit.
2. Aktivasi
Di Windows:
.\venv\Scripts\activate
Di Linux / macOS / WSL:
source venv/bin/activate
Saat aktif:
- Perintah
pythondanpipyang dijalankan di folder proyek, akan mengarah ke dalamvenv - Bukan ke global environment
Setelah virtual environment dibuat, ketika mau memakainya, aktifkan dulu. Kalau belum aktif, berarti kita masih pakai global environment.
Aktivasi hanya mengubah "arah" eksekusi python & pip.
venv bersifat permanen, activation bersifat sementara.
3. Install dependency
Contoh, misalnya kita hendak menginstall package requests dan beautifulsoup4 ke dalam virtual environment.
pip install requests beautifulsoup4
Ketika ini dijalankan di dalam virtual environment, semua package tersebut akan masuk ke dalam folder venv/, bukan global.
4. Menjalankan script
python script.py
Ketika virtual environment aktif, script tersebut dijalankan menggunakan Python dari venv.
5. Keluar dari Virtual Environment
deactivate
Tidak. Folder venv tetap ada, tapi ketika venv tidak aktif, berarti kita balik pakai global environment
- venv otomatis nonaktif
- tapi isinya tetap ada
Contoh struktur project
my-python-project/ <-- Root Proyek
│
├── script.py <-- Kode Anda (DI LUAR venv)
├── data.csv <-- Data pendukung
├── .gitignore <-- Mengabaikan folder venv/
├── requirements.txt
│
└── venv/ <-- Folder isolasi (Hanya berisi library & interpreter)
├── Include/
├── Lib/
└── Scripts/
Penting:
- Folder
venvbersifat disposable (bisa dibuang). Jika instalasi library rusak, Anda cukup menghapus foldervenvdan membuatnya ulang tanpa kehilangan kode sumber.- Code TIDAK masuk ke dalam
venv/venv/hanya untuk dependency
Tips
-
Satu Proyek, Satu venv: Jangan berbagi satu virtual environment untuk beberapa proyek yang berbeda.
-
Jangan Masuk ke Git: Folder
venvberukuran besar dan konfigurasinya spesifik untuk komputer Anda (tidak akan jalan di komputer orang lain).- Masukkan
venv/ke dalam file.gitignore.
- Masukkan
-
Gunakan
requirements.txt: Masukkan semua dependency yang digunakan kerequirements.txt. Bisa gunakan perintah ini untuk (misalnya) memasukkanfreezesebagai dependency, di-list dalamrequirements.txt:pip freeze > requirements.txtSelanjutnya, orang lain yg mau pakai kode kamu, cukup jalankan
pip install -r requirements.txtuntuk membuat virtual environment yang identik.