使用DirectRunner选项时,代码有效。但是将其切换到DataflowRunner时出现导入错误。找不到lxml模块是原因。当尝试将setuptools代码与主代码一起使用时,它仍然无法正常工作(--setup_file setup.py)。
setuptools.setup(
name='lxml',
version='4.2.5',
install_requires=[],
packages= setuptools.find_packages(),
)
错误:ImportError:[运行“运行查询”时,没有名为lxml的模块]
是否有任何帮助/建议来克服此错误?谢谢。
答案 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,
...)
如果lxml
是您唯一的依赖项,或者所有依赖项都依赖于PyPI,则您应该能够使用更为简单的requirements.txt文件。通常,setup.py方法需要更多样板。
要使用requirements.txt,请冻结您的依赖项:
pip freeze > requirements.txt
并将requirements.txt文件传递到您的管道:
--requirements_file requirements.txt
另请参见various dependency patterns for Python的Beam文档页面。