Folder .venv hasil Chapter Membuat Virtual Environment hanyalah direktori diam; shell kita belum tahu harus memakainya. Selama belum diaktifkan, perintah python3 dan pip masih menunjuk ke Python global, dan seluruh pip install akan menulis ke site-packages global pula. Aktivasi adalah proses mengarahkan shell saat ini ke interpreter milik venv — dan menonaktifkannya mengembalikan keadaan seperti semula.

Mengaktifkan venv #

Perintah aktivasi adalah script yang berbeda untuk setiap shell, semuanya sudah disediakan di dalam folder venv:

ShellPerintah
bash / zsh (Linux, macOS)source .venv/bin/activate
fishsource .venv/bin/activate.fish
csh / tcshsource .venv/bin/activate.csh
PowerShell (Windows).venv\Scripts\Activate.ps1
cmd.exe (Windows).venv\Scripts\activate.bat

Di Linux dan macOS, urutan lengkapnya:

bash
cd proyek-toko
source .venv/bin/activate

Output yang Dihasilkan:

text
(.venv) $

Perubahan pertama yang terlihat adalah prompt shell: teks (.venv) muncul di depan, menandakan environment aktif. Tidak ada output lain — script ini memang senyap.

Apa yang Dilakukan Script activate #

Script activate tidak menyentuh Python sama sekali; script tersebut hanya mengubah environment variabel shell:

  1. VIRTUAL_ENV diisi jalur folder venv, misalnya /home/budi/proyek-toko/.venv, sebagai penanda environment aktif.
  2. PATH diawali dengan .venv/bin (Linux/macOS) atau .venv\Scripts (Windows). Karena shell mencari program dari depan PATH, perintah python3 dan pip kini menemukan versi venv lebih dulu daripada versi global.

Itu seluruh sihirnya. Tidak ada Python yang disembunyikan atau diganti — hanya urutan pencarian program yang berubah.

Memverifikasi Aktivasi #

Jangan percaya prompt begitu saja; verifikasi dengan tiga cara berikut. Pertama, tanyakan ke shell program mana yang dipakai:

bash
which python3

Output yang Dihasilkan:

text
/home/budi/proyek-toko/.venv/bin/python3

Kedua, minta interpreter Python sendiri melaporkan basis operasinya (jalur di komputer Anda akan berbeda):

bash
python3 -c "import sys; print(sys.prefix); print(sys.base_prefix)"

Output yang Dihasilkan:

text
/home/budi/proyek-toko/.venv
/usr/local
  1. sys.prefix: direktori yang dianggap interpreter sebagai “rumah”-nya. Saat venv aktif, nilainya adalah folder venv — dari sinilah statement import mencari package di .venv/lib/python3.12/site-packages.
  2. sys.base_prefix: instalasi Python asli yang menjadi dasar venv. Jika kedua nilai ini sama, kita sedang memakai Python global, bukan venv.

Ketiga, pip --version ikut menunjukkan lokasinya:

text
pip 25.0.1 from /home/budi/proyek-toko/.venv/lib/python3.12/site-packages/pip (python 3.12)

Menonaktifkan venv #

Perintah deactivate (tanpa argumen, tanpa source) membalikkan seluruh perubahan: folder .venv/bin dikeluarkan dari PATH, variabel VIRTUAL_ENV dihapus, dan prompt kembali normal.

bash
deactivate
which python3

Output yang Dihasilkan:

text
/usr/local/bin/python3

Setelah nonaktif, pip install kembali menulis ke Python global — jadi pastikan venv aktif setiap kali masuk ke sesi kerja proyek.

Satu detail menarik: deactivate bukan program di folder bin, melainkan shell function yang didefinisikan oleh script activate ketika venv diaktifkan. Karena fungsi itu hidup hanya di sesi shell saat ini, menjalankan deactivate pada terminal yang tidak sedang aktif hanya menghasilkan pesan command not found — bukan galat pada venv kita.

venv dan VS Code #

Menjalankan script activate di setiap terminal memang repetitif. VS Code menyederhanakannya lewat pemilihan interpreter: buka Command Palette (Ctrl+Shift+P / Cmd+Shift+P), jalankan Python: Select Interpreter, lalu pilih entri bertanda .venv di dalam folder proyek. Setelah itu setiap terminal baru yang dibuka VS Code otomatis menjalankan script activate, dan ekstensi Python memakai venv yang sama saat menjalankan atau mendebug kode.