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