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 bir 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.