Isolating Your Python Package Using VirtualEnv




Lesson ini masih belum selesai sepenuhnya,

 

On the lesson before you already know how to using pip to manage your packages for your aplication. But the next questions is.., how if one of your aplication need same package, but in the different version. Because when you did import on Python,

Di lesson sebelumnya Anda sudah memahami bagaimana mengguna pip untuk me manage package-package pada aplikasi Anda. Namun pertanyaan selanjutnya adalah.. bagaimana jika satu aplikasi Anda membutuhkan package yang sama namun dengan versi yang berbeda. Karena saat Anda melakukan import di Python, tidak ada disana men spesififikasikan versi berapa dari package yang akan di install, hanya men spesifikasikan package apa yang akan di install. Juga bagaimana caranya Anda benar-benar yakin bahwasanya project Anda menggunakan satu set dari package tertentu saja. karena begitu Anda menginstall aplikasi Anda di sistem maka dia memiliki akses ke semua package yang ada pada siste itu, seperti contoh berikut:

ketika menjalan pip list, kita memiliki sekian banyak package
Screenshot from 2017-09-06 14-51-39.png

Begitu aplikasi Anda install disini maka dia memiliki akses ke semua package tersebut, itu membuat aplikasi Anda memiliki akses yang terlalu besar. Padahal sesungguhnya sebagai contoh aplikasi flask Anda tidak membutuhkan, misalnya numpynumpy.png

Anda tidak membutuhkan itu, namun aplikasi Anda bisa mengakses itu, itu ciri aplikasi yang tidak baik karena memiliki akses yang terlalu besar.

Nah.. sekarang akan saya jelaskan bagaimana caranya untuk membuat suatu lingkungan Environment yang terisolasi, sehingga aplikasi Anda hanya bekerja pada suatu set package yang benar-beanr dibutuhkan saja. Ok. tools yang akan Kita pakai adalah VirtualEnv.

 

Using VirtualEnv in Console

VirtualEnv memiliki websitenya yang bisa kita lihat di VirtualEnv

Screenshot from 2017-09-06 15-01-59.png

Ok pertama install dulu VirtualEnv dari terminal Anda, jalankan perintah berikut:

sudo apt-get install virtualenv

Screenshot from 2017-09-06 15-10-33.png

Kemudian kita masuk  ke salah satu directory project kita, kemudian buat sebuah directory baru

Screenshot from 2017-09-06 15-12-44.png

Untuk membuat suatu lingkungan yang terisolasi maka perintahnya adalah:

virtualenv nama_lingkunganya

Nama lingkungannya Anda bisa memberi nama apa saja, namun sebaiknya project/folder itu tidak kelihatan, kalau di Linux awali dengan tanda titik sebelum nama folder, seperti contoh berikut:

virtualenv .env

Screenshot from 2017-09-06 15-17-56.png

Ok.. jalankan perintah berikut untuk menampilkan yang ter hiden:

ls -ah

Screenshot from 2017-09-06 15-19-14.png

Disana ada terlihat .env, dan untuk membuat sistem itu aktiv maka jelankan perintah:

#source .nama_env/bin/activate

source .env/bin/activate

or

. .env/bin/activate

envhidden.png

Jika kita lihat prompt nya sudah ada .envDisini kita juga memiliki pip, namun jika kita lihat pip list

Screenshot from 2017-09-06 15-50-11.png

Package nya kosong, hanya ada 3 yaitu package untuk melakukan instalasi package-package yang lain, pip, setuptools, dan weel.

Artinya jika Anda membuat suatu aplikasi Python seperti contoh berikut:

Screenshot from 2017-09-06 15-55-27.png

Screenshot from 2017-09-06 15-54-23.png

Kemudian kita coba jalankan module tersebut

Screenshot from 2017-09-06 15-56-05.png

Hello World diatas, dia hanya memiliki akses kepada 3 package diatas, yaitu pip, setuptools, dan weel. Saya kasih contoh.. kita coba keluar dari lingkungan environtment tersebut, jalankan perintha berikut:

Screenshot from 2017-09-06 15-58-48.png

Setelah keluar kemudian kita coba lihat lagi pip list

Screenshot from 2017-09-06 16-00-58.png

Itu akan memuculkan banyak package karena dia adalah pip yang terdapat di

/usr/local/bin/pip

Itu bisa kita ketahui dengan menjalankan perintah berikut:

which pip

Screenshot from 2017-09-06 16-01-57.png

Dan ketika saya mengaktive kan environment:

source .env/bin/activate

Kemudian coba lihat pip list lagi:

Screenshot from 2017-09-06 16-05-05.png

Hanya terdapat 3 package, kemudian jika saya mencari dari mana pip berasal:

which pip

Screenshot from 2017-09-06 16-06-13.png

Lihat.. pip nya berasal dari directory .env kita:

/root/PycharmProjects/blog/belajar-virtualenv/.env/bin/pip

 

Ok.. contoh terakhir bagaimana kalau  saya merubah package ini dan saya mencoba melaukan import terhadap flask

Screenshot from 2017-09-06 16-08-52.png

Jika saya mencoba melakukan import terhadap flask, dan kemudian mencoba menjalan module hello.py lagi, akan menghasilkan:

Screenshot from 2017-09-06 16-10-39.png

Ya.. error.. no module name flask, karena di lingukan environment yang terisolasi ini flask belum ada.

Dan kalau saya coba keluar dari environment, dan menjalankan module tersebut:

Screenshot from 2017-09-06 16-13-59.png

Itu tidak akan masalah, meskipun ada perintah import flask

Screenshot from 2017-09-06 16-15-01.png

Namun di dalam lingkungan virtual environment flask tidak ada. Saya coba masuk ke lingkungan environment lagi:

Screenshot from 2017-09-06 16-16-50.png

Masih ada error, nah.. kemudian saya install dulu flask nya

Screenshot from 2017-09-06 16-18-25.png

Ok.. flask sudah terinstall.. jika saya mencoba menjalankan module python hello.py:

Screenshot from 2017-09-06 16-19-33.png

Tidak masalah..

 

Ok.. sasya harap ini bisa memberikan penjelasan apa itu virtualenv, dan selanjutnya kita akan mencoba menggunakan virtualenv pada pycharm.

Terima Kasih.