הקדמה
לכל שפת תכנות יש את יכולות השפה וה-eco-system
שלה.
מה שנמצא בתוך השפה הוא בדרך כלל הסטנדרט של השפה,
כל סטנדרט כזה מנוהל בדרך כלל על ידי comittee
כזה או אחר.
בפייתון קיימים PEP
- Python Enhancement Proposal
.
אלו הצעות שחלקן התקבלו לסטנדרט המגדיר כיצד מנגנונים בפייתון עובדים.
כמה מהמפורסמים:
PEP 8
: Style Guide for Python Code, which defines the conventions for writing clean and readable Python code.PEP 20
: The Zen of Python, which outlines the philosophy of Python in 19 guiding principles.PEP 484
: Introduced type hints to Python.
מה שמחוץ לסטנדרט זה ה-Eco System
.
וזה מגוון הכלים והיכולות שמפותחים לשפה ע”י אנשים, חברות, קבוצות קוד פתוח וכדו’…
כחלק מהסטנדרט יש לנו את הכלי pip
שמגיע עם כל התקנת פייתון.
כידוע לכם pip
יודע לנהל תלויות בחבילות שאתם צורכים לפייתון.
למשל כדי לשלוח בקשה נוכל להשתמש בחבילה requests
ונתקין אותה על ידי:
1 | pip install requests |
בשביל ליצור התקנות מנוהלות מה שנוכל לעשות זה להכניס את החבילה הזו לקובץ מיוחד בשם requierments.txt
.requierments.txt
:
1 | requests==2.31.0 |
פשוט וקל.
אבל…
זה לא כזה סטנדרטי מחוץ לפייתון, כאילו כן, אבל לא באמת.
חוץ מזה, יש חסרונות גדולים לזה,
ההתקנות בדרך כלל הן גלובליות, תלויות באיזו גרסת פייתון, וקשה לנהל גרסאות אוטומטיות ככה, למשל כשצריך לעדכן.
בשביל זה ייצרו גם את ה-venv
,
סביבות ווירטואליות לפייתון על מנת להתקין את החבילות בצורה לוקלאית לפרוייקט, דמויי node_modules
אם תרצו.
למרות שזו הוספה מעולה, הכלים הקיימים לא מצליחים לאפשר למתכנת לנהל את סביבתו בצורה אופטימלית.
זה אפשרי אבל לא אידיאלי.
בשביל זה ייצרו את הכלי - uv
.
UV
כלי מהיר לניהול והתקנה של חבילות קוד - מודולים - לפייתון.
כתוב ב-rust
ומחליף את pip
ו-pip-tools
.
uv
מקביל לכמה כלים בשפות שונות:
cargo
nvm
dotnet
nuget
כדי ללמוד על הכלי
https://github.com/astral-sh/uv
דוגמא
1 | git clone https://github.com/Ilya122/UVPyDocLearning.git |
https://github.com/Ilya122/UVPyDocLearning
מה יש בפרוייקט:
1 | templates - JINJA2 templates |
הדבר הראשון שאפשר לעשות הוא בתוך התיקייה:
1 | uv init |
מה שמאתחל פרוייקט בפייתון.
ניתן להשתמש ב:
1 | uv venv |
כדי לאתחל גם סביבה ווירטואלית
ואחר כך זה נהיה הרבה יותר קל, כדי להוסיף חבילה נעשה
1 | uv add <package> |
וכדי למחוק
1 | uv remove <package> |
שימוש ב-dockerfile
1 | # Use a Python image with uv pre-installed |
נוכל לראות כל מיני פקודות מוזרות שאספתי במקרה מהאתר של uv
.
הבעיה עם זה, זו הוספה של כלי לא סטנדרטי שצריך ללמוד לעבוד איתו,
כמובן הם מציעים שכבה של פייתון עם הכלי מותקן, אפשר לפצל את זה ולהתקין את uv
לבד.
בכל מקרה לא רואים פה משהו יותר מדי מסובך, רק כמה sync
כדי לעדכן את הסביבה.
הפרוייקט משתמש ב-MicroPie
שזו חבילה פשוטה לבניית שרת.
אנחנו משתמשים פה ב-gunicorn
כדי להריץ אפליקציית wsgi
.
פקודות נוספות
1 | Usage: uv [OPTIONS] <COMMAND> |
tree
עבור הפרוייקט נראה אילו תלויות אנחנו צורכים .
1 | uv tree |
python
מאפשר להוריד התקנות של פייתון
1 | uv python list |
ההמשך
כמובן יש הרבה מה לכתוב והרבה מה להסביר,
תורידו ותתחילו לעבוד עם הכלי כדי להתרשם בעצמכם.
זוהי התקדמות טובה אולם הוספנו עוד שכבה, ולכן רמת הסיבוכיות נהייתה גבוה יותר מסתם לכתוב קובץ סקריפט ולהריץ אותו בעזרת py
.
חשבו טוב למה אתם צריכים את זה ואיך תשתמשו בזה.
בכל אינטגרציה רצוי גם ללמד את הצוותים על הכלי ולא להשאיר את הכל באויר.
בהצלחה!