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


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