Python'da yazılan Cloud Functions işlevleri için bağımlılıkları belirlemenin iki yolu vardır: pip paket yöneticisinin requirements.txt
dosyasını kullanmak veya işlevinizle birlikte yerel bağımlılıkları paketlemek.
Pipfile/Pipfile.lock standardını kullanan bağımlılık belirtimi desteklenmez. Projeniz bu dosyaları içermemelidir.
pip ile bağımlılıkları belirleme
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, bağımlılıklarınızın requirements.txt
dosyasında bildirilen en yeni sürümünü indirmek ve yüklemek için pip 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 yer alır. 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 sabitlemeyi düşünün.
Aşağıda örnek bir requirements.txt
dosyası gösterilmektedir:
functions-framework requests==2.20.0 numpy
Functions Framework tüm işlevler için gerekli bir bağımlılıktır. Cloud Functions, işlev oluşturulduğunda bu işlevi 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 özel bağımlılıklara dayanıyorsa functions-framework
öğesini özel kayıt defterinize yansıtmanızı öneririz. Paketin herkese açık internetten yüklenmesini önlemek için yansıtılan functions-framework
öğesini işlevinize bağımlılık olarak ekleyin.
Yerel bağımlılıkları paketleme
Ayrıca bağımlıları işlevinizle birlikte 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
Daha sonra, aşağıdaki import
ifadesini kullanarak localpackage
sayfasından kodu her zamanki gibi 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 dosyalara sahip paketler yine paketlenebilir ancak Cloud Functions'da doğru şekilde çalışmayabilir.