Skip to main content
 首页 » 编程设计

python之gcp 数据流 apache-beam 问题。使用代码将另一个 python 文件导入 main .py

2024年12月31日30lvdongjie

我在处理 gcp 数据流项目时遇到问题。 我在 python 中创建了一个数据流管道代码。它运作良好。我想将此代码文件导入到另一个包含一些类和函数的 python 代码文件中。如果我只是导入它而不使用它,我的整个代码将无法正常工作。

当我在发布/订阅主题中放置消息时的错误文本:

File "dataflow_simple.py", line 87, in process NameError: global name 'pvalue' is not defined

如何导入另一个包含某些类的文件并使用它?

请您参考如下方法:

你想达到什么目的?如果目标是让一个文件定义函数和类,而另一个文件定义管道,那么您应该以相反的方式进行:从包含管道的文件中导入函数。

如果这确实是您想要做的,请以这种方式组织您的文件,并添加一个 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中,在build pipeline的时候给出setup.py的路径。这将确保在将作业发送到 Dataflow 时复制所有文件:

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

Reference