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


هناك طريقتان لتحديد اعتماديات دوال السحابة الإلكترونية المكتوبة بلغة Python، وهما: استخدام ملف requirements.txt الخاص بمدير الحِزم pip أو تجميع التبعيات المحلية إلى جانب وظيفتك.

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

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

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

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

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

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

functions-framework
requests==2.20.0
numpy

إنّ إطار عمل الدوال هو تبعية مطلوبة لجميع الدوال. على الرغم من أنّ ميزة 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. يمكن تجميع الحزم التي تحتوي على هذه الملفات، ولكن قد لا تعمل بشكل صحيح على دوال السحابة.