Passing local data
If you have a function that needs access to some data not present in your Python files themselves you have a few options for bundling that data with your Modal app.
Passing function arguments
The simplest and most straight-forward way is to read the data from your local script and pass the data to the outermost Modal function call:
import json def foo(a): print(sum(a["numbers"])) def main(): data_structure = json.load(open("blob.json")) foo.call(data_structure)
Any data of reasonable size that is serializable through cloudpickle is passable as an argument to Modal functions.
Refer to the section on global variables for how to work with objects in global scope that can only be initialized locally.
If you want to forward files from your local system, you can do that through
modal.Mount objects and the
def aws_stuff(): ...
Note: the mounted directory will not be shared between worker instances, so
modifying files or writing new files to a mount will not be reflected in other
functions calls with the same mount. For this reason, you should typically treat
Mount as read-only.
Mounting local packages
For the special case of mounting a local package so it’s also available within
your Python environment inside the container, Modal provides a
import modal import my_local_module stub = modal.Stub() def f(): my_local_module.do_stuff()