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


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