我在处理 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')
