Bayangkan proyek pipeline lama masih bergantung pada pandas versi 1.x, sementara proyek baru membutuhkan pandas 2.x. Bila seluruh pustaka dipasang ke satu interpreter global, pembaruan untuk proyek baru menimpa pustaka proyek lama dan pipeline lama berhenti berjalan. Virtual environment (venv) menyelesaikan masalah tersebut dengan memberi setiap proyek folder pustakanya sendiri. Untuk data engineer, isolasi semacam ini bukan gaya-gayaan: pipeline yang berjalan di laptop wajib berjalan juga di server CI dengan kombinasi versi yang sama persis.
Apa itu Virtual Environment #
Virtual environment adalah folder berisi salinan ringan interpreter Python ditambah folder site-packages tersendiri untuk menampung pustaka. Salinan tersebut bukan duplikat penuh — venv hanya menautkan kembali ke interpreter induk, lalu mengarahkan pemasangan pustaka ke folder venv. Begitu venv diaktifkan, perintah python3 dan pip di terminal merujuk ke folder venv tersebut, bukan ke interpreter sistem.
Membuat Virtual Environment #
Modul venv sudah tersedia di dalam Python standar, jadi kita tidak perlu memasang apa pun. Bukalah terminal di folder proyek, lalu jalankan:
python3 -m venv venv-demo
ls venv-demoOutput yang Dihasilkan:
bin
include
lib
lib64
pyvenv.cfgMari kita telaah isi folder tersebut:
- Folder
bin: menampung executablepython,python3,pip, dan skripactivateuntuk sistem Linux/macOS. Di Windows, folder tersebut bernamaScripts. - Folder
lib: menampungsite-packages, tempat seluruh pustaka proyek dipasang. - Berkas
pyvenv.cfg: menyimpan pengaturan venv, termasuk lokasi interpreter induk yang dipakai sebagai dasar.
Mengaktifkan dan Menonaktifkan #
Aktivasi menempatkan folder bin milik venv di posisi paling depan PATH, sehingga shell menemukan interpreter venv lebih dulu daripada interpreter sistem. Perintahnya berbeda antara sistem operasi:
| Sistem | Perintah aktivasi |
|---|---|
| Linux / macOS (bash, zsh) | source venv-demo/bin/activate |
| Windows PowerShell | venv-demo\Scripts\Activate.ps1 |
| Windows CMD | venv-demo\Scripts\activate.bat |
Mari kita amati perubahan yang terjadi di sistem Linux setelah aktivasi:
source venv-demo/bin/activate
which python3
which pip
deactivate
which python3Output yang Dihasilkan:
/home/z/my-project/scratch/W1-c/venv-demo/bin/python3
/home/z/my-project/scratch/W1-c/venv-demo/bin/pip
/home/z/.venv/bin/python3Dua baris pertama dicetak saat venv masih aktif: python3 dan pip sama-sama merujuk folder venv-demo/bin. Setelah perintah deactivate, which python3 kembali menunjuk interpreter luar — pada contoh di atas, interpreter virtual environment lain milik mesin penulisan; di komputer Anda kemungkinan besar /usr/bin/python3. Prompt shell juga menampilkan awalan (venv-demo) selama venv aktif, sebagai penanda visual.
Isi venv yang Masih Segar #
Venv baru belum memuat pustaka proyek apa pun. Kita bisa membuktikannya dengan menjalankan pip list dari dalam venv:
venv-demo/bin/pip listOutput yang Dihasilkan:
Package Version
------- -------
pip 25.0.1Satu-satunya paket yang hadir adalah pip sendiri. Inilah kekuatan isolasi: pustaka pandas, duckdb, atau pyspark yang terpasang di interpreter lain tidak ikut terlihat, sehingga daftar dependensi proyek selalu bersih dan terkendali sejak awal.
Mengapa venv Penting untuk Data Engineering #
- Reproduksibilitas: pipeline yang dijalankan ulang setahun kemudian tetap memakai versi pustaka yang sama, bukan versi terbaru yang perilakunya sudah berubah.
- Keamanan sistem: pemasangan pustaka tidak menyentuh interpreter sistem operasi, sehingga tidak diperlukan akses administrator.
- Paralelisme proyek: setiap proyek dapat memakai kombinasi versi berbeda tanpa saling menimpa.
- Kesiapan CI/CD: server integrasi berkelanjutan tinggal membuat venv baru dan memasang daftar dependensi yang sama.
Venv hanya menyediakan wadah kosong. Langkah berikutnya adalah mencatat pustaka apa saja yang dipasang ke dalamnya — pekerjaan yang dibahas tuntas pada chapter Manajemen Dependensi. Rujukan lengkap modul venv tersedia di https://docs.python.org/3/library/venv.html .