Virtual Environment Python di Windows
Memahami virtual environment dan cara membuat python virtual environment di Windows
Kenapa virtual environment?
Alasan utama menggunakan virtual environment adalah menghindari konflik dependency antar projects, dan juga untuk mempermudah development bahkan deployment ke production.
Misalkan project A dibuat dengan Python 2, tentunya package yg digunakan adalah package yang kompatibel dengan Python 2. Project lainnya, misalnya project B dibuat dengan Python 3, maka dependency-nya harus yang kompatibel dengan versi tersebut.
Jika kita me-run project diatas tanpa virtual environment maka kita harus mengganti versi Python dan meng-install packages untuk masing-masing project.
Juga saat project deployment, kita bisa menyamakan environment production dengan local machine untuk memastikan proses deployment berjalan lancar dan tidak ada konflik dependency.
Menggunakan Virtual Environment
Dengan asumsi bahwa Python sudah di-install, kita dapat dengan mudah membuat virtual environment dengan standard library Python (versi 3.5 keatas) venv
Jika belum install Python ikuti langkah pada posting berikut.
Cara membuat virtual environment
Untuk membuat virtual env pada project Python, masuk ke folder project kita dan jalankan command berikut:
D:\projects\medium>python -m venv venv
Selain menggunakan standard library Python, bisa juga menggunakan library external seperti virtualenv atau menggunakan conda. Namun pada post kali ini kita akan berfokus pada venv.
Activate Virtual Environment
Setelah menjalankan command diatas, kita akan memiliki folder venv, yaitu nama virtual environment kita. Untuk mengaktifkan gunakan command berikut:
D:\projects\medium>venv\Scripts\activate(venv) D:\projects>
Virtual environment telah aktif! Sekarang kita bisa meng-install dependency untuk project kita.
Install Packages
Setelah environment aktif, kita bisa meng-install external dependencies untuk project kita.
(venv) D:\projects\medium>python -m pip install <package-name>
Requirements File
Untuk meng-install libraries dari requirements file, gunakan command berikut:
(venv) D:\projects\medium>python -m pip install -r requirements.txt
Agar project bisa bersifat reproducible, atau bisa dijalankan di machine lain, kita perlu menyimpan dependency yang kita gunakan, aktifkan environment dan jalankan command berikut:
python -m pip freeze > requirements.txt
freeze
akan menyimpan dependencies project kita dan versi specifik yang kita gunakan pada file requirements.txt. File ini yang kemudian akan diinstall untuk mendapatkan libraries yang serupa pada machine mereka, sehingga project dapat dijalankan.
Deactivate
Setelah selesai menggunakan virtual environment deactivate dengan command:
(venv) D:\projects\medium>deactivate
D:\projects\medium>
Customize Virtual Environment
Jika ingin mengetahui lebih dalam lagi ada beberapa tambahan setting saat membuat atau menggunakan virtual environment yang mungkin berguna untuk case yang spesifik.
Overwrite Environment
Kita mungkin ingin menghapus environment yang telah dan membuat baru lagi atau anggap saja fresh install. Kita bisa menghapus folder virtual environment langsung dari file exporer atau bisa menggunakan option --clear
D:\projects\medium>venv\Scripts\pip.exe list
Package Version
--------------- -------
cycler 0.11.0
fonttools 4.37.1
joblib 1.1.0
kiwisolver 1.4.4
matplotlib 3.5.3
numpy 1.23.2
packaging 21.3
Pillow 9.2.0
pip 19.2.3
pyparsing 3.0.9
python-dateutil 2.8.2
scikit-learn 1.1.2
scipy 1.9.1
....D:\projects\medium>python -m venv venv --clearD:\projects\medium>venv\Scripts\pip.exe list
Package Version
---------- -------
pip 19.2.3
setuptools 41.2.0
Update Core Dependencies
Saat meng-install external libraries menggunakan pip
kemungkinan kita akan melihat warning berikut.
WARNING: You are using pip version 19.2.3, however version 22.2.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
Warning ini muncul karena pip yang diinstall adalah package dari CPython bukan dari project pip
yang membutuhkan koneksi internet. Kita bisa langsung mengikuti command yang dianjurkan pada warning tersebut:
python -m pip install --upgrade pip
Python versi 3.9 +
Jika menggunakan Python versi 3.9 keatas, untuk mengupdate pip
saat pembuatan virtual environment baru gunakan argument --upgrade-deps
D:\projects\medium>python -m venv venv --upgrade-deps
Argument tersebut akan otomatis mengupdate pip saat membuat virtual environment baru.
Menggunakan system site-packages
Untuk case tertentu misalkan kita ingin tetap bisa mengakses beberapa package yang kita install secara global, packages ini akan disimpan di environment Python yang bersifat global, yaitu di direktori site-packages Python. Kita bisa mengakses packages tersebut dengan:
python -m venv venv --system-site-packages
Contohnya jika kita pernah menginstall library untuk visualisasi Bokeh secara global. Saat development kita membutuhkan library untuk membantu data analysis atau untuk memahami data dengan visualisasi, namun untuk production library ini tidak dibutuhkan. Kita tidak perlu menginstall library tersebut pada virtual environment kita, melainkan kita hanya perlu mengakses site-packages yang dimiliki oleh Python.
Contoh path sebelum mengakses site-packages:
>>> import sys
>>> from pprint import pp
>>> pp(sys.path)
['',
'C:\\Users\\muti\\AppData\\Local\\Programs\\Python\\Python38\\python38.zip',
'C:\\Users\\muti\\AppData\\Local\\Programs\\Python\\Python38\\DLLs',
'C:\\Users\\muti\\AppData\\Local\\Programs\\Python\\Python38\\lib',
'C:\\Users\\muti\\AppData\\Local\\Programs\\Python\\Python38',
'D:\\projects\\medium\\venv',
'D:\\projects\\medium\\venv\\lib\\site-packages']
Contoh path setelah mengakses site-packages:
>>> import sys
>>> from pprint import pp
>>> pp(sys.path)
['', 'C:\\Users\\muti\\AppData\\Local\\Programs\\Python\\Python38\\python38.zip',
'C:\\Users\\muti\\AppData\\Local\\Programs\\Python\\Python38\\DLLs',
'C:\\Users\\muti\\AppData\\Local\\Programs\\Python\\Python38\\lib',
'C:\\Users\\muti\\AppData\\Local\\Programs\\Python\\Python38',
'D:\\projects\\medium\\venv',
'D:\\projects\\medium\\venv\\lib\\site-packages',
'C:\\Users\\muti\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages', 'C:\\Users\\muti\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\win32']
Bagian yang di-bold adalah path yang merefer ke site-package python secara global.
Kesimpulan
Dalam postingan kali ini telah dibahas beberapa hal yaitu:
- Alasan menggunakan virtual environment
- Membuat dan menggunakan virtual environment
- Melakukan beberapa customization pada virtual environment kita
Semoga membantu! Jangan lupa follow untuk update seputar Python, Data Science dan Machine Learning.