Mengenal Virtual Environment di Python
-
afrijaldz
- 06 Nov, 2024

Python pada dasarnya akan secara default terinstall di OS yang kita gunakan. Python yang sudah terinstall itu digunakan oleh sistem kita untuk menjalankan aplikasi - aplikasi bawaan.
Saat kita ingin mengembangkan sebuah aplikasi dengan Python diperlukan sebuah virtual environment. Mengapa butuh itu? karena bisa saja module yang kita gunakan akan berbeda versi dengan apa yang sudah ada di sistem kita yang sudah terinstall secara global.
Anggap saja di sistem kita sudah terinstall module A dengan versi 2.0.0, namun saat kita ingin mengembangkan suatu aplikasi membutuhkan module A versi 4.5.9, jika kita menggunakan module global aplikasi kita ga jalan dan harus diupgrade versinya, namun ketika kita upgrade versinya, akan merusak tatanan dunia.
Oleh sebab itu kita membutuhkan sebuah tempat khusus yang terisolasi dengan sistem, itu yang dinamakan virtual environment.
Dengan virtual environment, kita bisa menggunakan versi python, pip, dan module - module yang kita butuhkan sesuai kebutuhan aplikasi, tanpa merusak tatanan dunia. Karena terisolasi.
Ibaratnya, jika di sistem operasi kita terinstall [email protected]
kita bisa menggunakan [email protected]
di virtual environment dan menginstall module dengan versi terbaru.
Kita cukup memasang virtual environment di directory yang diinginkan.
Misal kita punya directory project-monitoring-gunung-slamet
dan kita ingin mengembangkan aplikasi dengan python di directory tersebut, sehingga kita perlu memasang virtual environment di directory tersebut.
Ada dua cara untuk memasangnya, yaitu dnegan module venv
atau dengan uv
venv
Untuk memasang virtual environment dengan venv
kita cukup mengetikkan
# di dalam directory `project-monitoring-gunung-slamet`
python3 -m venv .venv
Kita menggunakan python3 (bawaan) untuk menjalankan module venv
membuat virtual environment bernama .venv
uv
Pastikan uv
sudah terinstall, jika belum kamu bisa menginstallnya dengan Homebrew.
brew install uv
jika uv
sudah terinstall, untuk membuat virtual environment menggunakan
uv venv
Nama .venv
adalah lazimnya penamaan virtual environment, kamu bisa mengubahnya dengan apa saja.
Untuk mengaktifkan virtual environmentnya, kita bisa melakukan
source .venv/bin/activate
dan untuk mengecek apakan virtual environment tersebut sudah aktif / sedang digunakan bisa menggukanan
which python
Jika python mengarahkan ke direktori dimana virtual environment tersebut berada, maka virtual environment sudah aktif.
Untuk menonaktifkan virtual environment sendiri, kita bisa menggunakan perintah
deactivate
Misal kamu sedang membangun aplikasi dengan python lebih dari satu, pastikan ketika kamu berpindah-pindah project selalu mengecek virtual environment mana yang aktif. Karena jika tidak, ketika salah environment maka module yang digunakan dan bila menginstall module baru akan menggukanan environment yang sedang aktif.
Untuk membuat virtual environment, aku sendiri prefer menggunakan uv
karena dengan uv
selain untuk membuat virtual environment tersebut lebih singkat, tapi dengan uv
sudah terdapat pip
dengan versi terbaru.
Jika menggunakan venv
kita perlu mengupdate versi pipnya terlebih dahulu.
Selain itu directory .venv
sudah otomatis terdapat file .gitignore
untuk mencegah directory tersebut ikut terpush ke git repository.
Untuk menggunakan pip
di uv
kita bisa menggunakannya dengan uv pip
.
misal saat kita ingin ngefreeze module untuk disimpan ke dalam file requirements.txt
, maka kita bisa menggunakan
uv pip freeze > requirements.txt
begitu juga saat mau menginstall module
uv pip install -r requirements.txt
atau
uv pip install [nama-module]
Sebagai tambahan, jika kamu menemukan suatu module yang tidak bisa diinstall atau package registry dari module itu tidak ditemukan dengan pip dari virtual environment, kamu bisa menginstallnya dengan brew
.
Contohnya saat kamu mau menginstall module python-tkinter
. Kamu tidak akan bisa mengintallnya dengan uv pip install tkinter
, begitu pula dengan pip
global.
Tapi kamu bisa menginstall module itu dengan brew
brew install python-tkinter