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ını inceleyin.

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 uzantıyı sizin adınıza yüklese de, daha net olması için işlevi 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ığınız pip paket yöneticisi üzerinden kullanılamadığında veya Cloud Functions ortamınızın internet erişimi kısıtlanmışsa faydalı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 paketlenebilir ancak Cloud Functions'te düzgün çalışmayabilir.