我的文件夹结构如下:
Project/
--Pipeline.py
--setup.py
--dist/
--ResumeParserDependencies-0.1.tar.gz
--Dependencies/
--Module1.py
--Module2.py
--Module3.py
我的setup.py
文件如下所示:
from setuptools import setup, find_packages
setup(name='ResumeParserDependencies',
version='0.1',
description='Dependencies',
install_requires=[
'google-cloud-storage==1.11.0',
'requests==2.19.1',
'urllib3==1.23'
],
packages = ['Dependencies']
)
我使用setup.py文件使用“ python setup.py sdist”创建tar.gz文件。 tar文件位于dist文件夹中,名为ResumeParserDependencies-0.1.tar.gz。然后,我指定了
setup_options.extra_packages = ['./dist/ResumeParserDependencies-0.1.tar.gz'] in my pipeline options.
但是,一旦我在Dataflow上运行管道,就会出现错误“没有名为ResumeParserDependencies的模块”。如果我在本地使用“ pip install ResumeParserDependencies-0.1.tar.gz”,则该软件包会安装,并且可以使用“ pip Frozen”看到它。
将包加载到Dataflow时我缺少什么?
答案 0 :(得分:4)
我更改了文件夹结构并使其正常工作:
Project/
--Pipeline.py
--setup.py
--Module1/
--__init__.py
--Module2/
--__init__.py
--Module3/
--__init__.py
setup.py文件现在如下所示: 从setuptools导入设置,find_packages
setup(name='ResumeParserDependencies',
version='0.1',
description='Dependencies',
install_requires=[
'google-cloud-storage==1.11.0',
'urllib3==1.23'
],
packages = find_packages()
)
在管道中,我指定了:
setup_options.setup_file = './setup.py'
我不需要:
setup_options.extra_packages = ['./dist/ResumeParserDependencies-0.1.tar.gz']
答案 1 :(得分:0)
通常,发生此问题的原因是SDK或Worker依赖项的版本不匹配。要解决您的问题,请check your Dataflow version和Worker Dependencies for the SDK version来验证您是否正在运行兼容版本。