Проблема передачи данных gcp apache-beam. импортировать другой файл Python в основной.py с кодом

У меня проблема при работе над проектом потока данных gcp. Я создал код конвейера потока данных в Python. Это работает хорошо. Я хочу импортировать этот файл кода в другой файл кода Python с некоторыми классами и функциями. Если я просто импортирую его, но не использую, весь мой код не будет работать.

Текст ошибки, когда я помещаю сообщение в pub/sub topic:

Файл "dataflow_simple.py", строка 87, в процессе NameError: глобальное имя 'pvalue' не определено

Что я могу сделать, чтобы импортировать другой файл с некоторыми классами и использовать его?

1 ответ

Чего ты пытаешься достичь? Если цель состоит в том, чтобы один файл определял функции и классы, а другой определял конвейер, то вы должны сделать это наоборот: импортировать функции из файла, который содержит конвейер.

Если это действительно то, что вы пытаетесь сделать, упорядочите свои файлы таким образом и добавьте файл 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 при построении конвейера. Это обеспечит копирование всех файлов при отправке задания в Dataflow:

options = beam.options.pipeline_options.PipelineOptions(
    ...,
    setup_file='/path/to/setup.py')

Ссылка

Другие вопросы по тегам