繁体   English   中英

运行 Python FLEX 模板时出错:找不到子目录中的模块

[英]Error when running Python FLEX Template: module from subdirectory cannot be found

我正在尝试使用 Flex 模板运行 Dataflow 作业,但我遇到了“找不到模块错误”,我不知道为什么,所以这是我的目录结构

|__ modules
  |____ edgar_quarterly_form4.py
  |____ __init__.py
|__ main.py
|__ setup.py
|__ __init__.py

我的 main.py 在其代码中有此导入

from modules import edgar_quarterly_form4

这是我的 dockerfile

FROM gcr.io/dataflow-templates-base/python3-template-launcher-base

ARG WORKDIR=/dataflow/template
RUN mkdir -p ${WORKDIR}
RUN mkdir -p ${WORKDIR}/modules
WORKDIR ${WORKDIR}

COPY spec/python_command_spec.json ${WORKDIR}/python_command_spec.json
COPY modules ${WORKDIR}/modules

ENV DATAFLOW_PYTHON_COMMAND_SPEC ${WORKDIR}/python_command_spec.json

RUN pip install avro-python3 pyarrow==0.15.1 apache-beam[gcp]==2.27.0

COPY __init__.py ${WORKDIR}/__init__.py
COPY setup.py ${WORKDIR}/setup.py 
COPY main.py ${WORKDIR}/main.py
# Super important to add these lines.
ENV FLEX_TEMPLATE_PYTHON_SETUP_FILE="${WORKDIR}/setup.py"
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="${WORKDIR}/main.py"

这是我的 setup.py 文件

import setuptools

REQUIRED_PACKAGES = [
'numpy',
'beautifulsoup4',
'pandas',
'sendgrid==6.2.1',
'lxml',
'pandas_datareader',
'apache-beam[gcp]==2.27.0',
]
setuptools.setup(
   packages=setuptools.find_packages(),
install_requires=REQUIRED_PACKAGES,
)

但是,每次我的模板运行时,我都会收到此错误

368, in load_session module = unpickler.load() File "/usr/local/lib/python3.7/site- 
packages/dill/_dill.py", line 472, in load obj = StockUnpickler.load(self) File 
"/usr/local/lib/python3.7/site-packages/dill/_dill.py", line 827, in _import_module return 
 getattr(__import__(module, None, None, [obj]), obj) ModuleNotFoundError: No module named 
 'modules'

我不知道为什么。 我已经在我的 docker 文件中添加了一些回声,以查看是否所有文件都已被复制,并且所有文件都已成功复制到图像中......所以我无法真正弄清楚发生了什么请注意我得到了准确的即使 edgar_quarterly_form4.py 文件与 main.py 位于同一目录中,也会出现相同的错误

亲切的问候马可

好的,似乎对于梁 2.27,此解决方案不起作用相反,您应该遵循此线程中概述的内容

在数据流 Python flex 模板中包含另一个文件,ImportError

您必须在元数据中添加一个 setup_file 参数,并传递一个
--参数设置文件=

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM