[英]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.