Virtual Environment Python di Windows

Memahami virtual environment dan cara membuat python virtual environment di Windows

Muti
4 min readSep 7, 2022
Photo by frank mckenna on Unsplash

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 pipkemungkinan 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 pipyang 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.

--

--

Responses (1)