【问题标题】:GCP DataflowRunner ImportErrorsGCP DataflowRunner 导入错误
【发布时间】:2018-11-23 07:02:58
【问题描述】:

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

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

错误:ImportError: No module named lxml [while running 'Run Query']

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

【问题讨论】:

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


    【解决方案1】:

    你传递给setuptools.setup函数的name你的包的名字,它的依赖应该在参数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 文档页面。

    【讨论】:

    • 感谢您回答我的问题。后来我意识到我的错误并使用了需求文件。它按预期工作。
    • 很高兴问题得到解决,请考虑接受答复。
    猜你喜欢
    • 2021-03-25
    • 2021-05-02
    • 1970-01-01
    • 2023-04-10
    • 2017-08-30
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多