Bayangkan satu komputer menampung dua pekerjaan sekaligus: proyek analisis penjualan baru yang menuntut pandas versi terbaru, dan aplikasi lama peninggalan tim terdahulu yang hanya jalan dengan pandas 1.5. Jika keduanya memasang library ke tempat yang sama, salah satunya pasti terganggu — satu instalasi Python global hanya menyediakan satu slot untuk tiap library. Virtual environment (venv) menyelesaikan masalah tersebut dengan memberi setiap proyek folder penyimpanan library sendiri. Pada chapter ini kita membuat venv pertama kita, mempelajari cara mengaktifkan dan menonaktifkannya, serta membiasakan kebiasaan kerja yang membuat instalasi tetap terkendali.
Mengapa Setiap Proyek Perlu Lingkungan Sendiri #
Tanpa isolasi, seluruh perintah pip install menulis ke folder site-packages milik instalasi Python utama. Semua proyek di komputer tersebut berbagi isi folder yang sama. Masalah muncul begitu dua proyek menuntut versi berbeda dari library yang sama. Simulasi berikut memeriksa skenario tersebut — anggap komputer hanya punya satu Python global dengan pandas 2.2.3:
pandas_terpasang_global = "2.2.3"
kebutuhan_proyek = {
"analisis-penjualan": "2.2",
"aplikasi-lama": "1.5",
}
for proyek, versi_butuh in sorted(kebutuhan_proyek.items()):
cocok = pandas_terpasang_global.startswith(versi_butuh)
print(f"{proyek} butuh pandas {versi_butuh} -> {'cocok' if cocok else 'TIDAK cocok'}")Output yang Dihasilkan:
analisis-penjualan butuh pandas 2.2 -> cocok
aplikasi-lama butuh pandas 1.5 -> TIDAK cocokMari kita bedah baris-barisnya:
- Baris 1 (
pandas_terpasang_global): satu-satunya pandas yang tersedia di komputer — versi 2.2.3 disite-packagesglobal. - Baris 2-5 (
kebutuhan_proyek): dictionary yang memetakan dua proyek terhadap versi pandas yang dibutuhkan masing-masing. - Baris 7-10 (
for ... sorted(...)): tiap proyek diperiksa apakah pandas global memenuhi kebutuhannya. Proyek baru cocok, sedangkan aplikasi lama tidak — dan itulah persis masalahnya: satu versi global tidak bisa memuaskan dua proyek sekaligus.
Dengan venv, tiap proyek memiliki site-packages sendiri sehingga pandas 2.2 dan pandas 1.5 dapat hidup berdampingan di dua lingkungan terpisah. Keuntungan lainnya menyusul dengan sendirinya: daftar library tiap proyek terlihat jelas, dan proyek yang sudah tidak dipakai cukup dihapus foldernya tanpa menyisakan sisa di sistem.
Membuat Virtual Environment dengan venv #
Python membawa solusi ini di standard library, jadi tidak ada yang perlu dipasang terlebih dahulu. Masuk ke folder proyek, lalu jalankan satu perintah:
cd proyek-toko-kopi
python3 -m venv .venvPerintah tersebut tidak mencetak apa pun — diamnya berarti berhasil. Mari kita bedah dua bagian pentingnya:
python3 -m venv: flag-mmenjalankan modulevenvbawaan interpreter. Di Windows gantipython3denganpy..venv: nama folder lingkungan yang dibuat. Nama.venvadalah konvensi luas komunitas; titik di depan membuat folder tersembunyi di Linux/macOS.
Folder .venv berisi interpreter tautan, salinan pip, dan site-packages kosong. Di Windows nama foldernya sedikit berbeda (Scripts menggantikan bin), tetapi perbedaan tersebut hanya terasa saat aktivasi.
Mengaktifkan dan Menonaktifkan Lingkungan #
Membuat venv belum otomatis memakainya. Kita perlu mengaktifkan venv agar perintah python dan pip di terminal menunjuk ke isi folder .venv:
| Sistem operasi | Shell | Perintah aktivasi |
|---|---|---|
| Linux | bash | source .venv/bin/activate |
| macOS | zsh | source .venv/bin/activate |
| Windows | PowerShell | .venv\Scripts\Activate.ps1 |
| Windows | CMD | .venv\Scripts\activate.bat |
Setelah aktivasi berhasil, prompt terminal menampilkan penanda (.venv) di depannya:
(.venv) budi@laptop:~/proyek-toko-kopi$Kita juga dapat memeriksa status tersebut dari dalam Python. Interpreter yang berjalan di dalam venv memiliki sys.prefix berbeda dari sys.base_prefix milik instalasi dasar:
import sys
di_dalam_venv = sys.prefix != sys.base_prefix
print("Berjalan di dalam virtual environment:", di_dalam_venv)Output yang Dihasilkan:
Berjalan di dalam virtual environment: TrueNilai True di atas muncul karena contoh tersebut memang dijalankan dari dalam sebuah virtual environment — persis keadaan yang kita jumpai setelah source .venv/bin/activate. Skrip yang sama akan mencetak False bila dijalankan dengan interpreter global tanpa aktivasi. Pemeriksaan seperti ini berguna untuk memastikan notebook atau skrip panjang kita tidak secara tidak sengaja berjalan di lingkungan yang keliru.
Melihat Isi Lingkungan dengan pip list #
Bukti bahwa venv benar-benar terisolasi bisa kita lihat langsung. Pada venv yang baru dibuat dan diaktifkan, pip list hanya menampilkan pip:
pip listOutput yang Dihasilkan:
Package Version
------- -------
pip 25.0.1Bandingkan dengan instalasi global yang biasanya sudah menumpuk puluhan library. Daftar kosong tersebut justru kabar baik: kita memulai dari keadaan bersih, dan setiap library yang muncul di daftar berikutnya adalah keputusan sadar milik proyek ini. Setelah kita memasang library inti pada chapter berikutnya, perintah yang sama akan menampilkan misalnya numpy 2.1.3, pandas 2.2.3, matplotlib 3.9.2, dan scikit-learn 1.5.2 beserta dependensinya — hanya di lingkungan ini.
Untuk keluar dari lingkungan, cukup jalankan deactivate. Prompt kembali seperti semula dan terminal kembali menunjuk ke Python global. Folder .venv tetap ada; kita cukup mengaktifkannya lagi di lain waktu. Venv yang rusak atau tidak terpakai dapat dihapus utuh — kita tinggal membuatnya ulang dengan python3 -m venv .venv.
Referensi Resmi #
- Dokumentasi module venv — rujukan teknis lengkap untuk pembuatan dan aktivasi lingkungan.
- Tutorial venv pada dokumentasi Python — pengantar resmi berbasis skenario untuk pemula.
Rangkuman #
- Tanpa isolasi, seluruh proyek berbagi satu
site-packagesglobal sehingga dua proyek dengan kebutuhan versi berbeda saling mengganggu. python3 -m venv .venvmembuat lingkungan terisolasi; folder.venvadalah konvensi penamaan komunitas.- Aktivasi berbeda per sistem operasi:
source .venv/bin/activatedi Linux/macOS dan.venv\Scripts\Activate.ps1di Windows PowerShell. - Prompt
(.venv)menandai lingkungan aktif;deactivatemengembalikan terminal ke Python global. pip listpada venv baru hanya berisi pip — bukti bahwa lingkungan ini benar-benar terpisah dari instalasi global.
Lingkungan bersih sudah siap menampung peralatan kerja. Sekarang saatnya mengisinya: pada chapter berikutnya kita memasang empat library inti data science — NumPy, pandas, matplotlib, dan scikit-learn — serta memverifikasi versi masing-masing.