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


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