Mengenal Virtualenv: Apa Saja yang Harus Kamu Ketahui?
Waktu awal-awal belajar django, saya sedikit ‘dipusingkan’ dengan Virtual Environment (virtualenv).
Banyak tutorial menyarankan menggunakan virtualenv. Bahkan tidak hanya untuk django saja.
Sepertinya virtualenv adalah tools yang harus digunakan pada pengembangan aplikasi Python.
Apa itu vritualenv?
Kenapa kita harus menggunakan virtualenv?
Bagaimana cara menggunakan vritualenv?
Mari kita bahas…
Apa itu Virtualenv?
Vritualenv adalah tools untuk membuat lingkungan python virtual yang terisolasi.
Terisolasi artinya tertutup dan tidak bisa diakses dari dunia luar.
Program Python yang berjalan di dalam virtualenv memiliki modul-modulnya sendiri dan program dari luar tidak bisa mengaksesnya.
Sedangkan program Python yang berjalan tanpa vritualenv
hanya bisa menggunakan modul-modul global saja, yang
berada di /usr/lib/python2.7/site-packages
.
Kenapa Menggunakan Vritualenv?
Saat kita menginstal modul/library menggunakan pip
,
modulnya akan terinstal secara global di /usr/lib/python2.7/site-packages
.
Semua aplikasi bisa mengakses dan menggunakannya.
Apakah ini bagus?
ya bagus, tapi masalahnya begini:
Misal, pada hari ini kita membuat proyek aplikasi menggunakan django 1.1.
Aplikasi berjalan dengan sempurna menggunakan modul versi 1.1.
Lalu beberapa waktu kemudian, django rilis versi baru… aggaplah versi 4.0.
Kita kemudian melakukan upgrade modul.
Akan tetapi, aplikasi yang sudah kita buat tidak bisa berjalan dengan modul versi baru ini, karena banyak perubahan fungsi dan lain-lain.
Sementara itu, ada proyek aplikasi lain yang diharuskan menggunakan modul versi itu.
Karena itu… kita membutuhkan virtualenv, agar masing-masing aplikasi memiliki modulnya sendiri.
Bagaimana Cara Menggunakan Vritualenv?
Untuk dapat menggunakan Virtualenv, kita harus menginstalnya terlebih dahulu.
Instalasi Vritualenv
Virtualenv dapat kita instal dengan berbagai cara, salah satunya
bisa melalui apt
.
apt install virtualenv
atau:
apt install python-virtualenv
atau (untuk python3):
apt install python3-virtualenv
Atau bisa juga menggunakan pip
:
[sudo] pip install virtualenv
untuk versi terbaru:
[sudo] pip install https://github.com/pypa/virtualenv/tarball/develop
Atau juga bisa dengan cara tradisional, yaitu men-download paket tar, ekstrak, lalu install dengan setup-tools.
# download Virtualenv (jangan lupa ganti X.X dengan nomer versi yang terseida)
curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-X.X.tar.gz
# ekstrak virtualenv
tar xvfz virtualenv-X.X.tar.gz
# pindah ke direktori hasil ekstrak
cd virtualenv-X.X
# isntall virtualenv ke OS
[sudo] python setup.py install
Note: Silahkan instal dengan cara yang kamu sukai. Penggunaan
sudo
pada perintah, akan menginstal virtualenv secara global.
Untuk memastikan sudah terinstall dengan benar, coba ketik perintah berikut:
dian@petanikode ~ $ which virtualenv
/usr/local/bin/virtualenv
dian@petanikode ~ $ virtualenv --version
15.1.0
dian@petanikode ~ $
Membuat Virtualenv
Setelah menginstal virtualenv, barulah kita bisa menggunakannya untuk membuat lingkungan virtual.
Mari kita buat sebuah proyek baru, buat direktori bernama my-project
.
mkdir my-project
Setelah itu, buat virtual environment di sana.
cd my-project
virtualenv my-env
Saat kita mengetik perintah virtualenv my-env
, virtualenv
akan otomatis membuat lingkungan virtual dan direktori
baru bernama my-env
.
my-project/
└── my-env/
├── bin
├── include
├── lib
├── local
└── pip-selfcheck.json
Di dalamnya terdapat direktori untuk menyimpan modul-modul dan file binary untuk digunakan oleh aplikasi.
Mengakses Vritualenv
Setelah kita membuat virtual env, kita bisa mengaktifkan dan menonaktifkannya dengan cara berikut.
Aktifkan virtualenv:
source my-env/bin/activate
Atau kita bisa singkat source
dengan titik (.
):
. my-env/bin/activate
Maka sekarang, kita sudah masuk ke dalam lingkungan virtual.
Sekarang kita bisa menginstal modul apapun di sini, tanpa harus menggangu proyek atau aplikasi yang lain.
Mari kita coba menginstal flask
.
Flask adalah mikro framework untuk membuat web dengan bahasa pemrograman python.
Silahkan kietik perintah berikut untuk menginstalnya melalui pip
:
pip install Flask
Tunggulah beberapa saat, Flask sedang diinstal.
Sekarang coba ketik perintah flask --version
, maka akan
keluar keterangan versi Flask yang terinstal.
(my-env) dian@petanikode ~/Desktop/my-project $ flask --version
Flask 0.12.2
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609]
Selanjutnya, coba keluar atau nonaktifkan virtual environtment
dengan perintah deactivate
dan coba lagi perintah flask --version
.
Apa yang akan terjadi?
Yap! Perintah flask
tidak lagi dikenali, karena
belum terinstal di lingkungan OS (global).
Coba lagi masuk ke virtualenv, dan eksekusi flask.
. my-env/bin/activate
flask --version
Pasti bisa… karena sudah terinstal di sana.
Masih belum paham?
Mari kita coba membuat aplikasi Flask sederhana.
Silahkan buat file hello.py
di dalam direktori proyeknya,
kemudian isi kodenya seperti berikut:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
Setelah itu coba untuk mengeksekusi dari lingkungan OS dan lingkungan virtual dengan perintah:
FLASK_APP=hello.py flask run
Eksekusi di lingkungan OS:
dian@petanikode ~/Desktop/my-project $ FLASK_APP=hello.py flask run
No command 'flask' found, did you mean:
Command 'flasm' from package 'flasm' (universe)
flask: command not found
Eksekusi di lingkunan virtual:
dian@petanikode ~/Desktop/my-project $ . my-env/bin/activate
(my-env) dian@petanikode ~/Desktop/my-project $ FLASK_APP=hello.py flask run
* Serving Flask app "hello"
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Sukses!
Untuk melihat hasilnya silahkan buka http://localhost:5000.
Apa Selanjutnya?
Kita sudah mengenal dan belajar cara menggunakan Virtualenv, selanjutnya kita bisa bisa menggunakannya untuk keperluan sehari-hari.
Punya pertanyaan atau pengalaman menggunakan Virtualenv?
Mari sampaikan melalui komentar…