การจัดการการพึ่งพา


มีสองวิธีในการระบุการขึ้นต่อกันสำหรับฟังก์ชันคลาวด์ที่เขียนด้วย Python: การใช้ไฟล์ requirements.txt ของตัวจัดการแพ็คเกจ pip หรือการรวมการขึ้นต่อกันในเครื่องควบคู่ไปกับฟังก์ชันของคุณ

ไม่รองรับข้อกำหนดการพึ่งพาโดยใช้มาตรฐาน Pipfile/Pipfile.lock โครงการของคุณไม่ควรรวมไฟล์เหล่านี้

การระบุการพึ่งพาด้วย pip

การพึ่งพาใน Python ได้รับการจัดการด้วย pip และแสดงในไฟล์ข้อมูลเมตาที่เรียกว่า requirements.txt ไฟล์นี้ต้องอยู่ในไดเร็กทอรีเดียวกันกับไฟล์ main.py ที่มีโค้ดฟังก์ชันของคุณ

เมื่อคุณปรับใช้หรือปรับใช้ฟังก์ชันของคุณอีกครั้ง Cloud Functions จะใช้ pip เพื่อดาวน์โหลดและติดตั้งเวอร์ชันล่าสุดของการขึ้นต่อกันของคุณตามที่ประกาศไว้ในไฟล์ requirements.txt ไฟล์ requirements.txt มีหนึ่งบรรทัดต่อแพ็คเกจ แต่ละบรรทัดประกอบด้วยชื่อแพ็กเกจ และเวอร์ชันที่ร้องขอ (ไม่บังคับ) สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ การอ้างอิง requirements.txt .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