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:
| Shell | Perintah |
|---|---|
| bash / zsh (Linux, macOS) | source .venv/bin/activate |
| fish | source .venv/bin/activate.fish |
| csh / tcsh | source .venv/bin/activate.csh |
| PowerShell (Windows) | .venv\Scripts\Activate.ps1 |
| cmd.exe (Windows) | .venv\Scripts\activate.bat |
Di Linux dan macOS, urutan lengkapnya:
cd proyek-toko
source .venv/bin/activateOutput yang Dihasilkan:
(.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:
VIRTUAL_ENVdiisi jalur folder venv, misalnya/home/budi/proyek-toko/.venv, sebagai penanda environment aktif.PATHdiawali dengan.venv/bin(Linux/macOS) atau.venv\Scripts(Windows). Karena shell mencari program dari depanPATH, perintahpython3danpipkini 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:
which python3Output yang Dihasilkan:
/home/budi/proyek-toko/.venv/bin/python3Kedua, minta interpreter Python sendiri melaporkan basis operasinya (jalur di komputer Anda akan berbeda):
python3 -c "import sys; print(sys.prefix); print(sys.base_prefix)"Output yang Dihasilkan:
/home/budi/proyek-toko/.venv
/usr/localsys.prefix: direktori yang dianggap interpreter sebagai “rumah”-nya. Saat venv aktif, nilainya adalah folder venv — dari sinilah statementimportmencari package di.venv/lib/python3.12/site-packages.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:
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.
deactivate
which python3Output yang Dihasilkan:
/usr/local/bin/python3Setelah 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.