Back to Blog
Featuredසිංහල

UV සමඟ Python Dependency Management අලුත් විදිහකට

Pubudu Wijesundara
3 min read
... views
#Python#UV#Rust#PackageManagement#DevOps#SoftwareEngineering#Pip#Poetry#Pyenv#Astral#MLOps#DataScience#WorkflowAutomation#Performance#BackendDevelopment#TechBlog#ProgrammingSinhala#EnvironmentManagement#DependencyManagement#OpenSource#sinhala

uv banner 1 Software Engineer කෙනෙක්, Data Scientist කෙනෙක් , AI/ML Engineer කෙනෙක්, එහෙමත් නැත්නම් MLOps හෝ DevOps Engineer කෙනෙක් වුණත්, Python එක්ක වැඩ කරනව නම් Pip, Pyenv, Poetry වගේ tools අනිවාර්යයෙන්ම use කරනව.

මෙතනදි project එක ටිකක් ලොකුයි නම් Dependency managementවලදි එහෙමත් නැත්නම් Environment management කරන එක සෑහෙන හිසරදයක් වෙනව. මේ හැම දෙයක්ම සහ මම කලින් කිව්ව හැම tool එකකම වැඩ එකම තැනකින් සෑහෙන speed (10-100x) කරගන්න පුළුවන් python world එකේ 'Cargo Moment' එකක් ලෙස හඳුන්වන tool එකක් ගැනයි මේ සටහන.

මේ tool එක දැනටමත් use කරල තියනවනම් ඒ අය දන්නව මේ මොකක් ගැනද කතා කරන්න යන්නෙ කියල. uv banner 2

UV කියන්නෙ extremely fast Python package and project management tool එකක්. මේකෙ විශේෂත්වය තමයි මේක ලියල තියෙන්නේ pythonවලින් නෙවෙයි Rust කියන programming language එකෙන්. UV මේ තරම් high efficient වෙන්න මේකත් එක හේතුවක් වෙනව.

අපි බලමු UV use කරන එකෙන් ලැබෙන benifits මොනවද කියල.

uv කියන්නෙ Single Static Binary එකක්, ඒ නිසා අපිට UVවලින් වැඩ ගන්න python install කරල තියන එක අනිවාර්ය වෙන්නෙ නෑ.


01. One tool - all the work

uv banner 3

  • Python Versioning: pyenv වෙනුවට uv python install
  • Dependency Locking: pip-compile වෙනුවට uv lock
  • Environment Sync: pip-sync වෙනුවට uv sync
  • Tool Isolation: pipx වෙනුවට uvx

02. Universal Lockfiles

uv banner 4 python project එකක් windowsවල වැඩ කරල වෙනත් OS එකක උදාහරණයක් විදිහට Linuxවල වැඩ කරන් නැති වෙන ගැටලුව මේ UVවල "uv.lock" file එකෙන් විසඳනව. මේක හරියට nodeවල තියන package-lock.json file එක වගේ. මේ නිසා Windows, macOS, Linux ඕනෙම OS එකක, effortlessly එකම විදිහට project එක run කරන්න පුළුවන් වෙනව.


03. A revolution for single-file script

uv banner 5 මීට කලින් පොඩි python script එකක් ලියද්දි පවා packages install කරනව නම් Virtual Environment එකක් create කරන්න වෙනව. ඒත් UV වලදි script එක අතුලෙදිම අවශ්‍ය packages mention කරල "uv run" command එකෙන් ලේසියෙන්ම script එක run කරගන්න පුළුවන්.


04. Saving Disk Space

uv banner 6 සාමාන්‍යයෙන් developmentවලදි හැම project එකකටම අලුතින් packages download කරගන්න වෙනව. projectවලට use කරන packages මොනවද කියන එක මත සැලකිය යුතු ඉඩක් ඒ වෙනුවෙන් වැය වෙනව.

UVවල Global Module Cache මේ ප්‍රශ්නෙ සම්පුර්ණයෙන්ම විසඳනව. මේකෙදි වෙන්නේ download කරන හැම package එකක්ම එක තැනක store වෙන එක. ආයෙ කිසිම දවසක කලින් download කරපු package එකක් download නොකිරීමටත් අලුතින් build එකක් නොවීමටත් මෙතනදී වග බලාගන්නව.

හිතන්න අපි project එකකට කලින් download කරපු package එකක්ම use කරනව කියල. එතනදි වෙන්නෙ කලින් Global Cache එකේ store කරගත්ත package එකට Hardlink එකකින් connect වෙන එක.

මෙතනදි තියන වාසිය තමයි එකම package එක projects 100ක තිබුණත්, hard disk එකේ වැය වන්නේ තනි package එකකට අදාළ ඉඩ විතරක් වෙන එක.


Quick Commands:

Installation:

curl -LsSf https://astral.sh/uv/install.sh | sh

or With pip:

pip install uv

Installing a specific Python version:

uv python install 3.12

Starting a new project:

uv init my-project

Adding a package:

uv add requests

Running a script:

uv run script.py

uv banner 7 අවසාන වශයෙන් කියන්න තියෙන්නෙ UV කියන්නෙ Toolchain Managementවලට වැයවන අනවශ්‍ය කාලය ඉතුරු කරගෙන, project එකට අදාළ Core Logic එක සහ creative tasksවලට වැඩි focus එකක් දීල වැඩ කරන්න තියන නියම tool එකක් කියල.

For further study

@PubuduWijesundara
Until next time — keep hacking your way forward.

Related Articles