Bağımlılıkları yönetme


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.