Bağımlılıkları işleme


Python'da yazılmış Bulut İşlevleri için bağımlılıkları belirlemenin iki yolu vardır: pip paket yöneticisinin requirements.txt dosyasını kullanmak veya yerel bağımlılıkları işlevinizin yanında paketlemek.

Pipfile/Pipfile.lock standardını kullanan bağımlılık belirtimi 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 adı verilen bir meta veri dosyasında ifade edilir. Bu dosyanın, işlev kodunuzu içeren main.py dosyasıyla aynı dizinde olması gerekir.

İş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ü indirmek ve yüklemek için pip'i kullanır. requirements.txt dosyası paket başına bir satır içerir. Her satır paket adını ve isteğe bağlı olarak istenen sürümü içerir. Daha fazla ayrıntı 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 sabitlemeyi düşünün.

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

functions-framework
requests==2.20.0
numpy

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

İşleviniz özel bağımlılıklara dayanıyorsa, functions-framework özel kayıt defterinize yansıtmanızı öneririz. Paketin genel internetten yüklenmesini önlemek için yansıtılmış functions-framework işlevinize bağımlılık olarak ekleyin.

Yerel bağımlılıkları paketleme

Ayrıca işlevinizin yanı sıra bağımlılıkları da paketleyebilir ve dağıtabilirsiniz. Bu yaklaşım, bağımlılığınız pip paket yöneticisi aracılığıyla kullanılamıyorsa veya Cloud Functions ortamınızın internet erişimi kısıtlıysa kullanışlıdır.

Örneğin aşağıdakine benzer bir dizin yapısı kullanabilirsiniz:

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

Daha sonra aşağıdaki import ifadesini kullanarak kodu her zamanki gibi localpackage içe aktarabilirsiniz.

# Code in main.py
from localpackage import script

Bu yaklaşımın herhangi bir setup.py dosyasını çalıştırmayacağını unutmayın. Bu dosyalara sahip paketler yine de paketlenebilir ancak Cloud Functions'ta düzgün çalışmayabilir.