رسیدگی به وابستگی ها


دو راه برای تعیین وابستگی برای توابع Cloud نوشته شده در پایتون وجود دارد: استفاده از فایل requirements.txt مدیر بسته پیپ یا بسته بندی وابستگی های محلی در کنار تابع خود.

مشخصات وابستگی با استفاده از استاندارد Pipfile/Pipfile.lock پشتیبانی نمی شود. پروژه شما نباید شامل این فایل ها باشد.

تعیین وابستگی ها با پیپ

وابستگی ها در پایتون با پیپ مدیریت می شوند و در یک فایل ابرداده به نام requirements.txt بیان می شوند. این فایل باید در همان دایرکتوری فایل main.py باشد که حاوی کد تابع شماست.

هنگامی که تابع خود را مستقر یا مجدداً استقرار می دهید، Cloud Functions از پیپ برای دانلود و نصب آخرین نسخه وابستگی های شما همانطور که در فایل requirements.txt اعلام شده است استفاده می کند. فایل requirements.txt حاوی یک خط در هر بسته است. هر خط حاوی نام بسته و به صورت اختیاری، نسخه درخواستی است. برای جزئیات بیشتر، به مرجع requirements.txt مراجعه کنید.

برای جلوگیری از تحت تاثیر قرار گرفتن ساخت خود توسط تغییرات نسخه وابستگی، بسته های وابستگی خود را به یک نسخه خاص پین کنید.

نمونه زیر یک نمونه فایل requirements.txt است:

functions-framework
requests==2.20.0
numpy

چارچوب توابع یک وابستگی لازم برای همه توابع است. اگرچه هنگام ایجاد عملکرد، Cloud Functions آن را از طرف شما نصب می‌کند، توصیه می‌کنیم آن را به عنوان یک وابستگی صریح برای وضوح اضافه کنید.

اگر تابع شما به وابستگی های خصوصی متکی است، توصیه می کنیم که functions-framework به رجیستری خصوصی خود بازتاب دهید. برای جلوگیری از نصب بسته از اینترنت عمومی، functions-framework آینه‌شده را به عنوان وابستگی به عملکرد خود وارد کنید.

بسته بندی وابستگی های محلی

شما همچنین می توانید وابستگی ها را در کنار عملکرد خود بسته بندی و مستقر کنید. اگر وابستگی شما از طریق مدیر بسته پیپ در دسترس نباشد یا دسترسی به اینترنت محیط توابع ابری شما محدود باشد، این رویکرد مفید است.

به عنوان مثال، ممکن است از ساختار دایرکتوری مانند زیر استفاده کنید:

myfunction/
├── main.py
└── localpackage/
    ├── __init__.py
    └── script.py

سپس می توانید کد را طبق معمول از localpackage با استفاده از عبارت import زیر وارد کنید.

# Code in main.py
from localpackage import script

توجه داشته باشید که این روش هیچ فایل setup.py را اجرا نخواهد کرد. بسته‌های حاوی آن فایل‌ها همچنان می‌توانند بسته‌بندی شوند، اما ممکن است به درستی در توابع Cloud اجرا نشوند.