我正在构建Apache Beam管道,但是在尝试导入管道选项时遇到了AttributeError。
我正在使用python3.6在干净的虚拟环境中的Ubuntu服务器上进行测试
步骤:
virtualenv -p python3.6 beam-env
. beam-env/bin/activate
pip install apache_beam==2.12.0
python3.6 test.py
内部test.py:
from apache_beam.options.pipeline_options import PipelineOptions
我希望导入能够成功进行,但是出现以下错误:
AttributeError:模块'apache_beam.coders.coders'没有属性'VarIntCoder'
答案 0 :(得分:1)
当我用apache-beam编写自己的数据管道时,我发现了一种非常奇怪的行为:一旦在名为test.py
的文件中有了管道,就可以得到这种行为。
假设您在main.py
中拥有当前的实现,则只需要将整个代码复制到test.py
文件中,然后它将在两个文件上均产生错误。
我现在要解决此问题的唯一方法是删除该test.py或将其重命名为其他名称,然后问题就消失了。
答案 1 :(得分:0)
更新:
实际上,错误是由于python3引起的。切换到python2.7,错误消失了。 Beam完全过渡到python3,预计很快就会100%完成。 [我不确定100%的预计到达时间,也许是在用户组中仔细检查了确切的时间轴]
原件: 在您的virtualenv中也要执行以下操作:
pip install -e .[gcp,test]
,也许也可以在apache_beam文件夹下进行此操作:
python setup.py sdist
然后重试。
即使使用了virtualenv,安装环境也可能很棘手。我有时发现此页面中的提示有用:https://cwiki.apache.org/confluence/display/BEAM/Python+Tips
希望有帮助。
答案 2 :(得分:0)
为了解决此错误,您可以打开一个新项目。然后,重新安装apace-beam。
答案 3 :(得分:0)