Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to deploy Google Cloud Function with shared local dependencies?

I am having some trouble with local modules when deploying on Cloud Functions - any ideas or best practices would be appreciated!

I am trying to deploy a piece of my project as a Cloud Function. It uses some local code from the project, which is shared with other modules - and I use an absolute import for that. I am using a Cloud Repository for deployment, and there I state the folder where the function resides (parent\cloud_function\). The problem is the parent package is not available with that setup.

This is an example of the project structure:

├── parent_repo
│   ├── parent
│   │   ├── __init__.py
│   │   ├── config.conf
│   │   ├── config.py
│   │   ├── cloud_function
│   │   │   ├── __init__.py
│   │   │   ├── main.py
│   │   │   └── requirements.txt
│   │   ├── shared_module
│   │   │   ├── __init__.py
│   │   │   ├── package1.py
│   │   │   └── package2.py
│   │   ├── other_module
│   │   │   ├── __init__.py
│   │   │   ├── some_script.py
│   │   │   └── another_script.py
│   │   └── utils.py


inside parent.cloud_function.main.py AND in parent.other_module.some_script.py I use:

from parent.shared_module.package1 import some_func
from parent.shared_module.package2 importsome_class

to access shared code. However, when trying to deploy the function on Cloud Functions, since I assume it only looks at the folder alone, the parent module is unavailable.

Of course I could simply nest all required code inside the cloud_function folder - but from a project perspective that isn't ideal - as that code is shared across other resources, and does not logically belong there.

Does anyone have a good idea how to this better?

Thanks in advance!

like image 727
Amit Gal Avatar asked Jun 30 '26 05:06

Amit Gal


1 Answers

Very shortly - it is difficult.

Here is Python runtime - Specifying dependencies description -

requirements.txt file or packaging local dependencies alongside your function

You probably can play with Private dependencies in the Cloud Build

Some ideas are provided in the Deploy a Python Cloud Function with all package dependencies SO question.

like image 137
al-dann Avatar answered Jul 02 '26 17:07

al-dann



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!