Menu

Virtual environment di Python: venv, aktivasi, dan requirements.txt

Apa itu virtual environment, kenapa setiap proyek Python sungguhan membutuhkannya, dan cara membuat serta mengelolanya dengan module bawaan venv.

Masalah yang diselesaikan virtual environment

Install Python, jalankan pip install requests, dan package itu mendarat di satu tempat global. Itu tidak masalah untuk satu proyek. Begitu sampai proyek ketiga, mulai terasa sakitnya:

  • Proyek A butuh django==3.2. Proyek B butuh django==5.0. Hanya salah satu yang bisa ter-install secara global.
  • Kamu ingin mencoba library baru, tapi tidak mau library itu mengotori semua proyek lain di komputermu.
  • Rekan kerja meng-clone repo-mu dan sama sekali tidak tahu versi package mana saja yang sebenarnya kamu pakai.

Virtual environment adalah solusinya. Isinya sebuah folder mandiri berisi interpreter Python dan direktori instalasi library-nya sendiri. Saat environment itu diaktifkan, python dan pip di terminalmu menunjuk ke dalam folder tersebut, bukan ke Python yang berlaku di seluruh sistem. Package yang di-install di sana tetap di sana.

Membuat virtual environment dengan venv

venv sudah ikut bersama Python 3, tidak ada yang perlu di-install. Dari dalam direktori proyekmu:

python3 -m venv .venv

Perintah itu membuat folder .venv/ di samping kodemu. Nama .venv adalah konvensi yang hampir universal; titik di depannya membuatnya tersembunyi dari kebanyakan daftar isi direktori, dan editor seperti VS Code otomatis mendeteksinya.

Setelah perintahnya selesai, folder itu berisi instalasi Python lengkap (puluhan megabyte, itu wajar) dan pip miliknya sendiri.

Mengaktifkan environment

Aktivasi menulis ulang PATH shell-mu sehingga python dan pip merujuk ke yang ada di dalam .venv/. Perintahnya tergantung platformmu:

# macOS / Linux
source .venv/bin/activate

# Windows (Command Prompt)
.venv\Scripts\activate.bat

# Windows (PowerShell)
.venv\Scripts\Activate.ps1

Prompt-mu mendapat awalan (.venv) selama environment-nya aktif, sebagai pengingat visual. Setiap pip install yang kamu jalankan sekarang hanya memengaruhi proyek ini.

Setelah selesai untuk hari itu, deactivate mengembalikan keadaan sebelumnya:

deactivate

Kamu tidak perlu menonaktifkannya sebelum menutup terminal: keluar dari shell sama saja.

Meng-install package

Dengan environment aktif, install apa yang kamu butuhkan:

pip install requests
pip install "pandas>=2.0"
pip install --upgrade requests

Periksa apa saja yang ter-install dengan pip list. Hapus sesuatu dengan pip uninstall requests.

Package yang ter-install tinggal di .venv/lib/pythonX.Y/site-packages/. Kamu tidak pernah mengeditnya secara manual: pip yang mengelola direktori itu.

Mengunci dependensi dengan requirements.txt

Proyekmu hanya bisa diulang kalau orang lain bisa meng-install versi yang sama dengan yang kamu pakai. Cara paling sederhana untuk mencatatnya adalah requirements.txt:

pip freeze > requirements.txt

pip freeze mencetak setiap package yang ter-install beserta versi persisnya. Commit file itu ke git.

Saat rekan kerja (atau dirimu di masa depan di komputer baru) meng-clone repo-nya:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Tiga perintah, dan environment mereka sama dengan milikmu.

Setup proyek yang umum

Alur kerja lengkap, dari awal sampai akhir:

# Create the project folder
mkdir my_tool && cd my_tool

# Create and activate the venv
python3 -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install requests rich

# Save them
pip freeze > requirements.txt

# Work on your code...
echo "import requests; print(requests.__version__)" > main.py
python main.py

# When you're done
deactivate

Tambahkan .venv ke .gitignore-mu

Jangan pernah commit folder .venv/. Isinya khusus untuk platform tertentu dan bisa dibuat ulang dari requirements.txt:

# .gitignore
.venv/
__pycache__/
*.pyc

Kalau di-commit, repo-mu jadi membengkak, rusak di komputer lain, dan membocorkan binary khusus sistem operasi apa pun yang dimiliki interpreter-mu.

Versi Python yang mana?

Secara bawaan, python3 -m venv .venv memakai python3 mana pun yang ditemukan shell-mu. Kalau kamu punya beberapa Python ter-install (misalnya 3.12 dan 3.13), tentukan secara eksplisit yang mana:

python3.13 -m venv .venv

Begitu venv-nya ada, interpreter-nya terkunci: menjalankan python di dalam venv yang aktif selalu memakai versi tersebut, meskipun Python sistemmu berubah.

Saat ada yang salah

Beberapa gejala umum dan solusinya:

  • pip install berhasil, tapi import-ku gagal. Kamu meng-install ke Python yang salah. Aktifkan venv sebelum pip install, lalu periksa lagi dengan which python (macOS/Linux) atau where python (Windows).
  • "ModuleNotFoundError" setelah aktivasi. Venv-nya dibuat tanpa library tertentu, atau package-nya ter-install ke venv lain. pip list menunjukkan apa yang sebenarnya ada di venv saat ini.
  • Skrip aktivasi tidak ditemukan di Windows. PowerShell mungkin memblokir skrip yang tidak ditandatangani. Jalankan Set-ExecutionPolicy -Scope CurrentUser RemoteSigned sekali untuk mengizinkan skrip lokal.
  • "No module named venv". Di sebagian distribusi Linux, venv adalah package terpisah. Jalankan sudo apt install python3-venv di Debian/Ubuntu.

Di luar venv: Poetry, uv, pipenv

Begitu kamu nyaman dengan venv + pip + requirements.txt, kamu akan bertemu alat-alat yang membungkus gagasan yang sama dengan cara yang lebih nyaman:

  • Poetry: mengelola venv, dependensi, dan packaging dengan satu pyproject.toml.
  • uv: pengganti pip yang sangat cepat dan bisa langsung dipakai; juga menangani venv.
  • pipenv: alat yang lebih lama yang mempopulerkan pola "Pipfile + Pipfile.lock".

Semuanya bagus. Tidak ada yang wajib untuk belajar. Biasakan diri dulu dengan alur kerja venv biasa; sisanya hanyalah optimasi.

Yang perlu kamu ingat

  • Setiap proyek Python sungguhan punya virtual environment sendiri.
  • Buat dengan python3 -m venv .venv, aktifkan, lalu pip install dengan bebas.
  • Kunci dependensi dengan pip freeze > requirements.txt dan commit file itu.
  • Jangan pernah commit folder .venv/ itu sendiri.
  • Saat import bermasalah, periksa dulu Python mana yang sedang aktif.

Berikutnya: pola __main__

Dengan proyek yang sudah disiapkan dan package yang sudah ter-install, satu idiom terakhir menutup bab ini: guard if __name__ == "__main__". Guard ini ada di hampir setiap file Python yang dimaksudkan untuk dijalankan sebagai skrip, dan menjadi topik halaman berikutnya.

Pertanyaan yang sering diajukan

Apa itu virtual environment di Python?

Virtual environment adalah folder mandiri dengan interpreter Python sendiri dan direktori site-packages sendiri untuk library yang di-install. Mengaktifkannya membuat python dan pip menunjuk ke dalam folder itu, bukan ke Python sistemmu, sehingga package yang kamu install tidak bocor antarproyek.

Bagaimana cara membuat virtual environment di Python?

Jalankan python3 -m venv .venv di dalam folder proyekmu. Perintah itu membuat direktori .venv berisi instalasi Python yang baru. Aktifkan dengan source .venv/bin/activate di macOS/Linux atau .venv\Scripts\activate di Windows. Sekarang pip install hanya memengaruhi proyek ini.

Apakah setiap proyek Python sebaiknya memakai virtual environment?

Untuk apa pun yang lebih dari skrip sekali pakai, ya. Virtual environment mencegah bentrok versi antarproyek, membuat dependensi tercatat jelas di requirements.txt (atau pyproject.toml), dan memungkinkan rekan kerja mengulang setup-mu. Penyiapan satu menit ini menghemat berjam-jam debugging ModuleNotFoundError di kemudian hari.

Apa bedanya venv dan virtualenv?

venv sudah ada di Python 3, tidak perlu di-install. virtualenv adalah alat pihak ketiga yang lebih dulu ada, dengan beberapa fitur tambahan (pembuatan lebih cepat, dukungan untuk Python versi lama). Untuk kebanyakan proyek modern, venv adalah pilihan bawaan yang tepat; pakai virtualenv hanya kalau kamu punya kebutuhan khusus.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai