Python'da yazılan Cloud Functions için bağımlılıkları belirtmenin iki yolu vardır: pip paket yöneticisinin requirements.txt
dosyasını kullanma veya yerel bağımlılıkları işlevinizle birlikte paketleme.
Pipfile/Pipfile.lock standardı kullanılarak bağımlılık belirtimi desteklenmez. Projenizde bu dosyalar bulunmamalıdır.
Bağımlılıkları pip ile 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 belirtilen 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ırda paket adı ve isteğe bağlı olarak istenen sürüm bulunur. Daha fazla bilgi 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üşünebilirsiniz.
Aşağıda bir örnek requirements.txt
dosyası verilmiştir:
functions-framework requests==2.20.0 numpy
Functions Framework, tüm işlevler için zorunlu bir bağımlılıktır. Cloud Functions, işlev oluşturulduğunda bu paketi sizin adınıza yüklese de daha anlaşılır olması için bunu 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ılmış functions-framework
öğesini işlevinize bağımlılık olarak ekleyin.
Yerel bağımlılıkları paketleme
Ayrıca, bağımlılıkları işlevinizle birlikte paketleyip 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ıtlanmışsa kullanışlı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 localpackage
'dan 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 dosyaları içeren paketler yine de paketlenebilir ancak Cloud Functions üzerinde doğru şekilde çalışmayabilir.