Чего ты пытаешься достичь?Если цель состоит в том, чтобы один файл определял функции и классы, а другой определял конвейер, то вы должны сделать это наоборот: импортировать функции из файла, который содержит конвейер.
Если этодействительно, что вы пытаетесь сделать, упорядочите свои файлы таким образом и добавьте файл setup.py:
Dataflow
|----my_module
|----__init__.py
|----functions.py
|----classes.py
|----setup.py
|----my_pipe.py
Затем в my_pipe.py:
from my_module.functions import ...
from my_module.classes import ...
Все еще в my_pipe.py, укажите путь к setup.py при построении конвейера.Это обеспечит копирование всех файлов при отправке задания в Поток данных:
options = beam.options.pipeline_options.PipelineOptions(
...,
setup_file='/path/to/setup.py')
Ссылка