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:

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:

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:

  1. Masuk folder project
  2. Activate venv
  3. Kerja (install, run, dll)
  4. Tutup terminal / deactivate venv

1. Membuat venv

python -m venv venv

Ini akan membuat folder venv/ berisi:

Perintah ini dijalankan di mana?

Sangat disarankan: dijalankan di dalam folder proyek. Sehingga, folder baru venv/ dibuat di dalam proyek.

Bisa pakai nama folder yang lain?

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:

Bukankah folder venv tadi sudah dibuat? Untuk apa diaktivasi?

Setelah virtual environment dibuat, ketika mau memakainya, aktifkan dulu. Kalau belum aktif, berarti kita masih pakai global environment.

Note

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
Apakah venv dihapus saat deaktivasi?

Tidak. Folder venv tetap ada, tapi ketika venv tidak aktif, berarti kita balik pakai global environment

Kalau terminal ditutup

  • 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:


Tips

  1. Satu Proyek, Satu venv: Jangan berbagi satu virtual environment untuk beberapa proyek yang berbeda.

  2. Jangan Masuk ke Git: Folder venv berukuran besar dan konfigurasinya spesifik untuk komputer Anda (tidak akan jalan di komputer orang lain).

    • Masukkan venv/ ke dalam file .gitignore.
  3. Gunakan requirements.txt: Masukkan semua dependency yang digunakan ke requirements.txt. Bisa gunakan perintah ini untuk (misalnya) memasukkan freeze sebagai dependency, di-list dalam requirements.txt:

    pip freeze > requirements.txt
    

    Selanjutnya, orang lain yg mau pakai kode kamu, cukup jalankan pip install -r requirements.txt untuk membuat virtual environment yang identik.