Bağımlılıkları yönetme


Python'da yazılmış Cloud Functions için bağımlılıkları belirtmenin iki yolu vardır: pip paket yöneticisinin requirements.txt dosyasını kullanmak veya yerel bağımlılıkları işlevinizle birlikte paketlemek.

Pipfile/Pipfile.lock standardını kullanan bağımlılık spesifikasyonu desteklenmez. Projeniz bu dosyaları içermemelidir.

pip ile bağımlılıkları belirtme

Python'daki bağımlılıklar pip ile yönetilir ve requirements.txt adlı bir meta veri dosyasında ifade edilir. Bu dosya, işlev kodunuzu içeren main.py dosyasıyla aynı dizinde olmalıdır.

İşlevinizi dağıttığınızda veya yeniden dağıttığınızda Cloud Functions, requirements.txt dosyasında belirtildiği gibi bağımlılıklarınızın en son sürümünü indirip yüklemek için pip'i kullanır. requirements.txt dosyası, paket başına bir satır içerir. Her satırda paket adı ve isteğe bağlı olarak istenen sürüm bulunur. Daha fazla bilgi için requirements.txt referansına bakın.

Derlemenizin bağımlılık sürümü değişikliklerinden etkilenmesini önlemek için bağımlılık paketlerinizi belirli bir sürüme sabitleyebilirsiniz.

Aşağıda bir requirements.txt dosyası örneği verilmiştir:

functions-framework
requests==2.20.0
numpy

İşlev Çerçevesi, tüm işlevler için zorunlu bir bağımlılıktır. Cloud Functions, işlev oluşturulduğunda bu paketi sizin adınıza yüklese de netlik için açık bir bağımlılık olarak eklemenizi öneririz.

İşleviniz gizli bağımlılıklara dayanıyorsa functions-framework dosyasını özel kayıt defterinize yansıtmanızı öneririz. Paketi herkese açık internetten yüklememek için yansıtılan functions-framework dosyasını işlevinize bağımlı olarak ekleyin.

Yerel bağımlılıkları paketleme

Ayrıca, işlevinizle birlikte bağımlılıkları paketleyip dağıtabilirsiniz. Bu yaklaşım, bağımlılık öğeniz pip paket yöneticisi üzerinden kullanılamıyorsa veya Cloud Functions ortamınızın internet erişimi kısıtlanmışsa kullanışlıdır.

Örneğin, aşağıdaki gibi bir dizin yapısı kullanabilirsiniz:

myfunction/
├── main.py
└── localpackage/
    ├── __init__.py
    └── script.py

Ardından, aşağıdaki import ifadesini kullanarak kodu her zamanki gibi localpackage'ten içe aktarabilirsiniz.

# Code in main.py
from localpackage import script

Bu yaklaşımın setup.py dosyalarını çalıştırmayacağını unutmayın. Bu dosyaları içeren paketler yine de derlenebilir ancak Cloud Functions'te düzgün çalışmayabilir.