Python में लिखे गए Cloud Functions के लिए डिपेंडेंसी तय करने के दो तरीके हैं: pip पैकेज मैनेजर की requirements.txt
फ़ाइल का इस्तेमाल करना या अपने फ़ंक्शन के साथ लोकल डिपेंडेंसी का इस्तेमाल करना.
Pipfile/Pipfile.lock स्टैंडर्ड का इस्तेमाल करके, डिपेंडेंसी की जानकारी देने की सुविधा काम नहीं करती. आपके प्रोजेक्ट में ये फ़ाइलें शामिल नहीं होनी चाहिए.
pip की मदद से डिपेंडेंसी तय करना
Python में डिपेंडेंसी को पीआईपी की मदद से मैनेज किया जाता है. साथ ही, इसे requirements.txt
नाम की मेटाडेटा फ़ाइल में दिखाया जाता है.
यह फ़ाइल उसी डायरेक्ट्री में होनी चाहिए जिसमें main.py
फ़ाइल है. इसमें आपका फ़ंक्शन कोड होता है.
फ़ंक्शन को डिप्लॉय या फिर से डिप्लॉय करने पर, Cloud Functions
requirements.txt
फ़ाइल में बताई गई डिपेंडेंसी का नया वर्शन डाउनलोड और इंस्टॉल करने के लिए, पीआईपी का इस्तेमाल करता है.
requirements.txt
फ़ाइल में हर पैकेज के लिए एक लाइन है. हर लाइन में, पैकेज का नाम और अनुरोध किया गया वर्शन होता है. हालांकि, यह ज़रूरी नहीं है कि हर लाइन में वर्शन शामिल हो. ज़्यादा जानकारी के लिए, requirements.txt
रेफ़रंस देखें.
डिपेंडेंसी के वर्शन में होने वाले बदलावों से अपने बिल्ड पर असर न पड़े, इसके लिए डिपेंडेंसी पैकेज को किसी खास वर्शन पर पिन करें.
requirements.txt
फ़ाइल का उदाहरण यहां दिया गया है:
functions-framework requests==2.20.0 numpy
सभी फ़ंक्शन के लिए, Functions फ़्रेमवर्क का इस्तेमाल करना ज़रूरी है. फ़ंक्शन बनाने पर, Cloud Functions इसे आपकी ओर से इंस्टॉल करता है. हालांकि, हमारा सुझाव है कि आप इसे साफ़ तौर पर डिपेंडेंसी के तौर पर शामिल करें.
अगर आपका फ़ंक्शन, निजी डिपेंडेंसी पर निर्भर करता है, तो हमारा सुझाव है कि आप functions-framework
को अपनी निजी रजिस्ट्री में मिरर करें. सार्वजनिक इंटरनेट से पैकेज इंस्टॉल करने से बचने के लिए, मिरर किए गए functions-framework
को अपने फ़ंक्शन की डिपेंडेंसी के तौर पर शामिल करें.
स्थानीय डिपेंडेंसी को पैकेज करना
अपने फ़ंक्शन के साथ-साथ, डिपेंडेंसी को भी पैकेज और डिप्लॉय किया जा सकता है. यह तरीका तब काम आता है, जब आपकी डिपेंडेंसी, pip पैकेज मैनेजर के ज़रिए उपलब्ध न हो या आपके Cloud Functions एनवायरमेंट के इंटरनेट ऐक्सेस पर पाबंदी लगी हो.
उदाहरण के लिए, किसी डायरेक्ट्री स्ट्रक्चर का इस्तेमाल किया जा सकता है, जैसे कि:
myfunction/ ├── main.py └── localpackage/ ├── __init__.py └── script.py
इसके बाद, नीचे दिए गए import
स्टेटमेंट का इस्तेमाल करके, localpackage
से कोड को हमेशा की तरह इंपोर्ट किया जा सकता है.
# Code in main.py from localpackage import script
ध्यान दें कि इस तरीके से कोई भी setup.py
फ़ाइल नहीं चलेगी. उन फ़ाइलों वाले पैकेज अब भी बंडल किए जा सकते हैं. हालांकि, हो सकता है कि वे Cloud Functions पर सही तरीके से न चलें.