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:

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

text
analisis-penjualan butuh pandas 2.2 -> cocok
aplikasi-lama butuh pandas 1.5 -> TIDAK cocok

Mari kita bedah baris-barisnya:

  1. Baris 1 (pandas_terpasang_global): satu-satunya pandas yang tersedia di komputer — versi 2.2.3 di site-packages global.
  2. Baris 2-5 (kebutuhan_proyek): dictionary yang memetakan dua proyek terhadap versi pandas yang dibutuhkan masing-masing.
  3. 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:

bash
cd proyek-toko-kopi
python3 -m venv .venv

Perintah tersebut tidak mencetak apa pun — diamnya berarti berhasil. Mari kita bedah dua bagian pentingnya:

  1. python3 -m venv: flag -m menjalankan module venv bawaan interpreter. Di Windows ganti python3 dengan py.
  2. .venv: nama folder lingkungan yang dibuat. Nama .venv adalah 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 operasiShellPerintah aktivasi
Linuxbashsource .venv/bin/activate
macOSzshsource .venv/bin/activate
WindowsPowerShell.venv\Scripts\Activate.ps1
WindowsCMD.venv\Scripts\activate.bat

Setelah aktivasi berhasil, prompt terminal menampilkan penanda (.venv) di depannya:

text
(.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:

python
import sys

di_dalam_venv = sys.prefix != sys.base_prefix
print("Berjalan di dalam virtual environment:", di_dalam_venv)

Output yang Dihasilkan:

text
Berjalan di dalam virtual environment: True

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

bash
pip list

Output yang Dihasilkan:

text
Package Version
------- -------
pip     25.0.1

Bandingkan 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 #

Rangkuman #

  • Tanpa isolasi, seluruh proyek berbagi satu site-packages global sehingga dua proyek dengan kebutuhan versi berbeda saling mengganggu.
  • python3 -m venv .venv membuat lingkungan terisolasi; folder .venv adalah konvensi penamaan komunitas.
  • Aktivasi berbeda per sistem operasi: source .venv/bin/activate di Linux/macOS dan .venv\Scripts\Activate.ps1 di Windows PowerShell.
  • Prompt (.venv) menandai lingkungan aktif; deactivate mengembalikan terminal ke Python global.
  • pip list pada 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.