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


יש שתי דרכים לציין יחסי תלות עבור 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

Functions Framework הוא תלות חובה לכל הפונקציות. למרות ש-Cloud Functions מתקין את הספרייה בשמכם כשיוצרים את הפונקציה, מומלץ לכלול אותה כתלות מפורשת כדי שהקוד יהיה ברור יותר.

אם הפונקציה שלכם מסתמכת על יחסי תלות פרטיים, מומלץ לשכפל את functions-framework למאגר הפרטי שלכם. כדי להימנע מהתקנת החבילה מהאינטרנט הציבורי, צריך לכלול את functions-framework המשוכפל כהסתמכות בפונקציה.

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

אפשר גם לארוז ולפרוס יחסי תלות לצד הפונקציה. הגישה הזו שימושית אם התלות לא זמינה דרך מנהל החבילות 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.