טיפול ביחסי תלות


יש שתי דרכים לציין יחסי תלות עבור Cloud Functions שנכתבו ב-Python: באמצעות קובץ requirements.txt של מנהל החבילות pip, או באמצעות אריזה של יחסי תלות מקומיים לצד הפונקציה.

אין תמיכה בציון יחסי תלות באמצעות התקן Pipfile/Pipfile.lock. אסור לכלול את הקבצים האלה בפרויקט.

ציון יחסי תלות באמצעות PIP

יחסי תלות ב-Python מנוהלים באמצעות pip ומפורטים בקובץ מטא-נתונים שנקרא requirements.txt. הקובץ הזה צריך להיות באותה ספרייה שבה נמצא קובץ main.py שמכיל את קוד הפונקציה.

כשפורסים או פורסים מחדש את הפונקציה, Cloud Functions משתמש ב-pip כדי להוריד ולהתקין את הגרסה האחרונה של התלויות שמוצהרות בקובץ requirements.txt. הקובץ requirements.txt מכיל שורה אחת לכל חבילה. כל שורה מכילה את שם החבילה, ואת הגרסה המבוקשת (אופציונלי). פרטים נוספים זמינים במאמר requirements.txt.

כדי למנוע השפעה של שינויים בגרסאות של יחסי תלות על הבנייה, כדאי להצמיד את חבילות יחסי התלות לגרסה ספציפית.

קובץ requirements.txt לדוגמה:

functions-framework
requests==2.20.0
numpy

אריזת יחסי תלות מקומיים

אפשר גם לארוז ולפרוס תלויות לצד הפונקציה. הגישה הזו שימושית אם התלות לא זמינה דרך מנהל החבילות pip או אם הגישה לאינטרנט בסביבת Cloud Functions מוגבלת.

לדוגמה, אפשר להשתמש במבנה של ספרייה כמו זה שמופיע בהמשך:

myfunction/
├── main.py
└── localpackage/
    ├── __init__.py
    └── script.py

אחר כך תוכלו לייבא את הקוד כרגיל מ-localpackage באמצעות ההצהרה הבאה import.

# Code in main.py
from localpackage import script

חשוב לדעת: בגישה הזו, קובצי setup.py לא יפעלו. עדיין אפשר לארוז חבילות עם הקבצים האלה, אבל יכול להיות שהן לא יפעלו בצורה תקינה ב-Cloud Functions.