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