التعامل مع التبعيات


هناك طريقتان لتحديد تبعيات دوال السحابة المكتوبة في بايثون: استخدام واجهة برمجة تطبيقات مدير الحزم pip requirements.txt أو إنشاء حزمة للتبعيات المحلية جنبًا إلى جنب مع الدالة.

يتم تحديد مواصفات التبعية التي تستخدم معيار Pipfile/Pipfile.lock غير متوافق. يجب ألا يتضمن مشروعك هذه الملفات.

تحديد التبعيات باستخدام pip

تُدار التبعيات في بايثون باستخدام pip ويتم التعبير عنها في ملف بيانات وصفية يسمى requirements.txt يجب أن يكون هذا الملف في الدليل نفسه الذي يتضمن الملف main.py الذي يحتوي على التعليمة البرمجية للدالة.

عند نشر الدالة أو إعادة نشرها، تتوفر ميزة Cloud Functions. بروتوكول pip لتنزيل أحدث إصدار منه وتثبيته. كما هو موضح في ملف requirements.txt. يتضمّن ملف requirements.txt سطرًا واحدًا لكل حزمة. يحتوي كل سطر على اسم الحزمة، وكذلك الإصدار المطلوب اختياريًا. لمزيد من التفاصيل، يُرجى مراجعة requirements.txt المرجع.

لمنع تأثُّر إصدارك بالتغييرات التي تطرأ على إصدار الاعتمادية، ففكر في تثبيت حزم التبعية على إصدار معين.

في ما يلي مثال على ملف requirements.txt:

functions-framework
requests==2.20.0
numpy

إطار عمل الدوال هو التبعية المطلوبة لجميع الدوال. على الرغم من أنّ وظائف السحابة الإلكترونية تثبّتها نيابةً عنك عند إنشاء الدالة، ننصحك أنك تقوم بتضمينه كتبعية صريحة من أجل الوضوح.

إذا كان على التبعيات الخاصة، فنحن ننصحك النسخ المطابق 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.