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


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

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

קובץ 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.