הגיע הזמן לעבור ל-uv
כמי שהתאהב בשפת התכנות פייתון ממבט ראשון, תמיד הופתעתי מהזמן הארוך שלקח לרעיון של פרוייקט תכנה להתפתח ולהתבסס בה. בסביבות פיתוח כמו .net, למשל, הרעיון של קובץ פרוייקט שמגדיר את המאפיינים, את התלויות ואת האריזה של הקוד שאנחנו עובדים עליו היה שם כמעט מההתחלה.
בפייתון, לעומת זאת, אימצו את קובץ הפרוייקט pyproject.toml
לפני פחות מעשור ואני עדיין פוגש צוותי פיתוח שלא מכירים אותו. צוותים כאלה לא נהנים מהיתרונות של תת-המערכת הזו כמו ניהול קל של הסביבה הוירטואלית ואריזה אוטומטית של הקוד לחבילה.
כל ההקדמה הזאת נועדה כדי לספר לכם על uv – כלי קוד פתוח חינמי שמביא את פייתון לבשלות מלאה בכל מה שקשור לניהול הפרוייקט והאריזה. כלי אחד שלא רק שהוא מחליף את כל שלל הכלים שבאו לפניו – setuptools, pip, pipx, pyenv, virtualenv וכן, גם poetry – אלא שהוא גם מהיר מהם בזמן ריצה בסדר גודל שלם.
uv זמין ב-OS X, לינוקס וחלונות. הנה עיקר הדברים שהכלי יודע לעשות בשבילנו בפייתון:
- לנהל את
pyproject.toml
באמצעות פקודות טרמינל פשוטות. - לקבע ולהתקין את גרסת פייתון שבה רץ הפרוייקט.
- ליצור עבור הפרוייקט virtual environment ולנהל אותה.
- להחליף את pip האהוב ולרוץ פי 10 (!) יותר מהר ממנו.
- לנהל את רשימת התלויות (package dependencies) של הפרויקט דרך
pyproject.toml
. - לארוז את הפרויקט אוטומטית לחבילה סטנדרטית ולהעלות אותה למאגר חבילות (package repository).
יש שני גורמים שמאפשרים ל-uv להשיג את כל הקסם הזה. ראשית, uv כתוב בשפת Rust. Rust רצה מהר כמעט כמו ++C מכיוון שהיא שפה שמתהדרת (“מתקמפלת”) ישירות לשפת מכונה. שנית, הצוות שכתב את uv בשנה וחצי האחרונות (בראשות Charlie Marsh מ-Astral) נהנה מכל הידע שנצבר בכלים הוותיקים יותר והתמקד במה שכואב – בניית עץ התלויות של הפרויקט וההתקנה שלהן במהירות שיא.
הצלחתי לשווק לכם? 😊 מעניין אתכם לנסות את הכלי? ניסיתם והתרשמתם? ספרו לי בתגובות.