Cloud Functions में लिखे गए फ़ंक्शन के लिए डिपेंडेंसी तय करने के दो तरीके हैं: pip पैकेज मैनेजर के requirements.txt
फ़ाइल का इस्तेमाल करना या अपने फ़ंक्शन के साथ लोकल डिपेंडेंसी को पैकेज करना.
Pipfile/Pipfile.lock स्टैंडर्ड का इस्तेमाल करके, डिपेंडेंसी स्पेसिफ़िकेशन की सुविधा काम नहीं करती. आपके प्रोजेक्ट में ये फ़ाइलें शामिल नहीं होनी चाहिए.
pip की मदद से डिपेंडेंसी तय करना
Python में डिपेंडेंसी को 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, सभी फ़ंक्शन के लिए ज़रूरी डिपेंडेंसी है. फ़ंक्शन बनाने के दौरान, 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 पर ठीक से काम न करें.