GCP DataflowRunner ImportErrors

时间:2018-11-23 07:02:59

标签: python google-cloud-platform apache-beam

使用DirectRunner选项时,代码有效。但是将其切换到DataflowRunner时出现导入错误。找不到lxml模块是原因。当尝试将setuptools代码与主代码一起使用时,它仍然无法正常工作(--setup_file setup.py)。

setuptools.setup(
    name='lxml',
    version='4.2.5',
    install_requires=[],
    packages= setuptools.find_packages(),
)

错误:ImportError:[运行“运行查询”时,没有名为lxml的模块]

是否有任何帮助/建议来克服此错误?谢谢。

1 个答案:

答案 0 :(得分:1)

您传递给name函数的setuptools.setup您的包的名称,应在参数install_requires中指定其依赖项。我想它可以与DirectRunner一起使用,因为该软件包已安装在您的本地计算机上。

Beam juliaset示例提供了一个示例setup.py文件:

REQUIRED_PACKAGES = ['numpy']
setuptools.setup(
    name='juliaset', # this is their package name
    version='0.0.1',
    description='Julia set workflow package.',
    install_requires=REQUIRED_PACKAGES,
    ...)

PyPI依赖项

如果lxml是您唯一的依赖项,或者所有依赖项都依赖于PyPI,则您应该能够使用更为简单的requirements.txt文件。通常,setup.py方法需要更多样板。

要使用requirements.txt,请冻结您的依赖项:

pip freeze > requirements.txt

并将requirements.txt文件传递到您的管道:

--requirements_file requirements.txt

另请参见various dependency patterns for Python的Beam文档页面。