Bayangkan dua proyek di satu komputer: proyek lama bergantung pada pandas 2.x, sedangkan Course ini memakai pandas 3.0.6. Memasang keduanya di lokasi Python yang sama membuat pip saling menimpa versi paket, dan pembaruan untuk satu proyek justru mengganggu proyek lainnya. Modul bawaan Python bernama venv menyelesaikan masalah tersebut dengan membuat lingkungan terisolasi untuk setiap proyek. Chapter ini memandu pembuatan, aktivasi, dan pemeriksaan virtual environment sebelum kita memasang pandas.
Mengapa Proyek Butuh Lingkungan Terpisah #
Sebuah virtual environment adalah folder khusus yang berisi interpreter Python sendiri beserta folder site-packages tersendiri. Paket yang kita pasang selama environment aktif hanya masuk ke folder tersebut, bukan ke instalasi Python global. Tabel berikut membandingkan keduanya:
| Aspek | Tanpa virtual environment | Dengan virtual environment |
|---|---|---|
| Lokasi paket | Satu site-packages global untuk semua proyek | site-packages khusus di dalam folder proyek |
| Versi paket | Semua proyek terpaksa memakai satu versi | Setiap proyek memegang versinya sendiri |
| Dampak pembaruan | Upgrade satu paket dapat mengganggu proyek lain | Perubahan terkurung di dalam .venv proyek |
| Pembongkaran | Menghapus paket lama berisiko menyisakan sisa | Menghapus folder .venv membersihkan semuanya |
Karena perilaku pandas berubah besar antar versi mayor, isolasi ini syarat agar contoh Course selalu berperilaku sama di komputer Anda.
Cara Kerja Modul venv #
Saat dijalankan, venv membuat folder baru yang berisi salinan atau symlink interpreter Python, berkas konfigurasi pyvenv.cfg, dan folder site-packages yang masih kosong. Ketika environment diaktifkan, shell menerima variabel VIRTUAL_ENV yang menunjuk ke folder tersebut, dan setiap pemanggilan python atau pip diarahkan ke dalamnya. Dari sisi Python, perubahan ini terlihat pada dua atribut modul sys: sys.prefix menunjuk ke lokasi environment aktif, sedangkan sys.base_prefix tetap menunjuk ke instalasi Python dasar. Kedua atribut inilah yang dipakai untuk membuktikan bahwa isolasi benar-benar bekerja.
Langkah 1: Membuat Virtual Environment #
Pilih (atau buat) folder proyek Anda, lalu buka terminal di folder tersebut. Buat environment bernama .venv dengan modul venv; di macOS dan Linux kita memanggilnya lewat python3:
python3 -m venv .venvDi Windows, gunakan Python launcher yang terpasang bersama installer:
py -m venv .venvPerintah pembuatan selesai tanpa mencetak pesan apa pun; keberhasilannya ditandai oleh kemunculan folder .venv. Isi foldernya di Linux:
ls .venvOutput yang Dihasilkan:
bin
include
lib
lib64
pyvenv.cfgFolder bin menyimpan interpreter dan skrip aktivasi, lib (atau Lib di Windows) menampung site-packages, sedangkan pyvenv.cfg mencatat lokasi instalasi Python dasar pemilik environment ini. Isi folder pada macOS serupa; perbedaannya hanya nama folder yang tidak memakai angka 64.
Langkah 2: Mengaktifkan dan Menonaktifkan #
Environment baru masih pasif; shell kita belum mengarah ke dalamnya. Aktivasi dilakukan dengan menjalankan skrip yang cocok dengan shell Anda:
| Shell / sistem | Perintah aktivasi |
|---|---|
| bash atau zsh (macOS, Linux) | source .venv/bin/activate |
| fish (macOS, Linux) | source .venv/bin/activate.fish |
| PowerShell (Windows) | .venv\Scripts\Activate.ps1 |
| cmd (Windows) | .venv\Scripts\activate.bat |
Setelah aktivasi, nama environment muncul sebagai awalan prompt, misalnya (.venv) user@host:~/proyek$, dan semua pemanggilan python serta pip menunjuk ke .venv. Untuk keluar, jalankan deactivate; prompt kembali normal dan perintah python kembali ke Python global. Aktivasi hanya berlaku pada jendela terminal tempat perintah dijalankan, jadi jendela baru perlu mengulang aktivasi.
Langkah 3: Memastikan Virtual Environment Aktif #
Pemeriksaan pertama memanfaatkan pip: environment baru seharusnya nyaris kosong. Setelah mengaktifkan .venv, jalankan python3 -m pip list; hasilnya hanya berisi pip itu sendiri (versi pip dapat berbeda di komputer Anda):
python3 -m pip listOutput yang Dihasilkan:
Package Version
------- -------
pip 25.0.1Pemeriksaan kedua memakai skrip Python kecil yang membandingkan sys.prefix dengan sys.base_prefix, dua atribut yang dibahas di awal chapter ini:
import sys
print("Prefix saat ini :", sys.prefix)
print("Prefix dasar :", sys.base_prefix)
print("Di dalam venv :", sys.prefix != sys.base_prefix)Output yang Dihasilkan:
Prefix saat ini : /home/z/.venv
Prefix dasar : /home/z/.local/share/uv/python/cpython-3.12.15-linux-x86_64-gnu
Di dalam venv : TrueOutput di atas diambil dari lingkungan penulisan Course, yang sendirinya berjalan di dalam virtual environment bernama .venv; pada komputer Anda, dua baris path menunjuk ke folder .venv proyek masing-masing. Interpretasinya mudah dibaca:
Prefix saat ini: lokasi yang dipakai Python untuk mencarisite-packagessaat berjalan; ketika environment aktif, nilai ini menunjuk folder.venv.Prefix dasar: lokasi instalasi Python yang menjadi induk environment; nilai ini tidak berubah oleh aktivasi.Di dalam venv: bernilaiTruesaat environment aktif; tanpa aktivasi, kedua prefix bernilai sama dan hasilnyaFalse.
Dengan pip list yang kosong dan Di dalam venv: True, lingkungan kita sudah benar-benar terisolasi. Satu-satunya yang masih hilang adalah paket datanya sendiri: pada Chapter berikutnya kita memasang pandas dari halaman paket pandas di PyPI
ke dalam environment ini.