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.