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ı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 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 paketi sizin adınıza yüklese de netlik için 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ık öğeniz pip paket yöneticisi üzerinden 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 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 derlenebilir ancak Cloud Functions'te düzgün çalışmayabilir.