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