Apakah yang disebut dengan Virtual Environment? - Tutorial Python Virtual Environment Untuk Pemula.
Seperti namanya, Virtual Environment adalah sebuah ruang lingkup virtual yang terisolasi dari dependencies utama.
Virtual Environment sangat berguna ketika kita membutuhkan dependencies yang berbeda-beda antara project satu dengan lainnya yang berjalan pada satu system operasi yang sama.
Virtual Environment biasa digunakan untuk project berbasis Python. Karena Prject tersebut mempunyai kebutuhan / dependent yang berbeda-beda antara satu dengan lainnya, maka dibutuhkanlah sebuah virtual environment untuk menjalankannya, tanpa merubah configurations pada system operasi yang kita pakai.
Berikut ini penjelasan singkatnya :
+-------------------+---------------+--------------------+
| | | |
| | | |
| | | |
| Project 1 | Project 2 | Project 3 |
| Django Framework | Flask | ReactJS & Python |
| | | |
| | | |
| | | |
+--------+----------+-------+-------+---------+----------+
| | |
| | |
| | |
| | |
v v v
+--------+--------+---------+--------+--------+----------+
| Python 3.8 | Python 2.7 | NPM & Python3.10 |
| | | |
+-----------------+------------------+-------------------+
Lalu apa yang akan terjadi jika kita tidak menggunakan virtual environment pada ketiga project di atas?
Tentunya hal tersebut suatu saat akan menyebabkan crash jika kita salah melakukan instalasi package yang dibutuhkan.
Ada beberapa cara untuk membuat virtual environment.
Untuk mengetahui versi python berapakah yang telah terinstall, kita bisa menggunakan command berikut ini :
$ Python --version
Python 3.10 :: Anaconda, Inc. #output yang dihasilkan adalah versi python yang sedang kita gunakan
# atau
$ Python3 --version
Python 3.10 :: Anaconda, Inc. #output yang dihasilkan adalah versi python yang sedang kita gunakan
Untuk menginstall latest version, kita bisa melakukan download terlebih dahulu di situs resmi python.org
$ python3 -m venv env
atau juga bisa menggunakan :
# kita bisa menggunakan `python` tanpa version python jika default yang kita punya adalah versi 3!
$ python -m venv env
Tunggulah beberapa saat hingga proses selesai, dan kita akan melihat folder env
dalam directory tersebut. Yang mana env
adalah folder Virtual Environment yang baru saja kita buat.
Jika kita masuk ke dalam folder tersebut, kita akan menemukan banyak library / python package yang tentunya telah support pada versi python yang digunakan:
env/
|--bin
|--include
|--lib
|--lib64
|--pip-selfcheck.json
`--pyvenv.cfg
Setelah kita berhasil membuat Virtual Environment, selanjutkan kita harus mengaktifkannya terlebih dahulu dengan cara:
& source env/bin/activate
Maka di akan muncul seperti dibawah ini :
(env) icoldplayer@icoldplayer:~$
^
|
+
Kita telah berhasil mengaktifkan Virtual Environment yang baru saja kita buat dan sedang berada di dalamnya.
Apabila sejauh ini berhasil, next step kita akan coba install dependencies menggunakan pip
atau pip3
.
💡 Jika kita pengguna linux, maka default untuk menjalankan latest version python adalah dengan mengetik command python3
pada terminal.
buatlah file .aliases
pada home directory dan letakkan script ini di dalamnya:
alias python=python3
alias pip=pip3
Sebelum kita install beberapa dependencies menggunakan pip
, akan lebih bagus apabila kita upgrade pip
version terlebih dahulu dengan cara:
(env) icoldplayer@icoldplayer:~$ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
pip (9.0.3)
setuptools (39.0.1)
You are using pip version 9.0.3, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Secara default, begitu kita membuat Virtual Environment
baru, maka kedua package
tersebut telah terinstall otomatis di dalamnya.
Untuk melakukan upgrade dependencies pada virtual environment, kita dapat menggunakan perintah:
(env) icoldplayer@icoldplayer:~$ pip install --upgrade pip
Maka akan muncul hasil seperti di bawah ini :
Cache entry deserialization failed, entry ignored
Collecting pip
Using cached https://files.pythonhosted.org/packages/d8/f3/413bab4ff08e1fc4828dfc59996d721917df8e8583ea85385d51125dceff/pip-19.0.3-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 9.0.3
Uninstalling pip-9.0.3:
Successfully uninstalled pip-9.0.3
Successfully installed pip-19.0.3
Selanjutnya kita akan mencoba untuk menginstall Django Framework menggunakan pip
.
Ketikkan perintah berikut ini di Terminal :
(env) icoldplayer@icoldplayer:~$ pip install django
Collecting django
Downloading https://files.pythonhosted.org/packages/c7/87/fbd666c4f87591ae25b7bb374298e8629816e87193c4099d3608ef11fab9/Django-2.1.7-py3-none-any.whl (7.3MB)
100% |████████████████████████████████| 7.3MB 1.3MB/s
Collecting pytz (from django)
Using cached https://files.pythonhosted.org/packages/61/28/1d3920e4d1d50b19bc5d24398a7cd85cc7b9a75a490570d5a30c57622d34/pytz-2018.9-py2.py3-none-any.whl
Installing collected packages: pytz, django
Successfully installed django-2.1.7 pytz-2018.9
Dari perintah di atas kita telah berhasil melakukan installasi Django dengan sukses.
Langkah selanjutnya, apabila kita ingin melihat dependencies
/ package
apa saja yang telah terinstall menggunakan pip
, ketikkan perintah berikut ini di terminal :
(env) icoldplayer@icoldplayer:~$ pip list
Package Version
---------- -------
Django 2.1.7
pip 19.0.3
pytz 2018.9
setuptools 39.0.1
Well done!.
Kita telah berhasil membuat Virtual Environment
pada system operasi kita, sehingga kita tidak perlu khawatir dengan bermacam-macam project yang akan kita kerjakan, meskipun project tersebut menggunakan dependencies yang berbeda-beda.
Untuk menonaktifkan Virtual Environment tersebut bisa menggunakan perintah :
(env) icoldplayer@icoldplayer:~$ deactivate
Maka dengan otomatis kita akan keluar dari Virtual Environment
Virtual Environment sangat memudahkan kita untuk mengelola / me-manage banyak dependencies dari beberapa project yang berbeda-beda tanpa mengubah config pada system operasi tersebut.
Thanks for reading.