如何修复 `AttributeError: module 'apache_beam.coders.coders' has no attribute 'VarIntCoder'` 错误。

3

我正在构建一个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: module 'apache_beam.coders.coders' 没有 'VarIntCoder' 属性。
4个回答

28

我在使用apache-beam编写自己的数据管道时,发现了一个非常奇怪的行为:一旦你在名为test.py的文件中创建了一个管道,就会出现这种行为。

假设您的当前实现在main.py中,您只需要将整个代码复制到test.py文件中,之后两个文件都会出现错误。

目前唯一解决问题的方法是要么删除test.py文件,要么将其重命名为其他名称。


2
这非常奇怪,几分钟前我只想测试一下 beam 并将其命名为 test.py。 - David Cardozo
4
这很奇怪,但是重命名确实有帮助。 - Upperwal
谢谢你提到这个问题,它为我节省了数小时的调试时间。这正是我所经历的。将驱动程序文件重命名为除 test.py 以外的其他名称,一切都正常工作了。 - Twist
我因为test.py的错误浪费了2个小时,非常感谢,我将其删除后一切正常。 - davidleosam
这很奇怪!一旦我将文件重命名为“main.py”,我的问题就得到了解决。 - Niraj Kale
显示剩余2条评论

3

对于使用Google Colab的用户,我遇到了同样的错误,并通过重新启动运行时并再次运行整个笔记本解决了它。

enter image description here

我的导入是

!{'pip install apache-beam[gcp]'}
!{'pip install apache-beam[interactive]'}
!{('pip install google-apitools')}

0

更新:

实际上,这个错误是由于Python3引起的。切换到Python2.7,错误就消失了。Beam正在完全过渡到Python3,预计很快就会100%完成。[我不确定100%完成的时间,也许在用户组中再次确认确切的时间线]

原文: 在您的虚拟环境中也执行以下操作:

pip install -e .[gcp,test]

也许还可以在apache_beam文件夹下执行此操作:

python setup.py sdist

然后再试一次。

即使使用了虚拟环境,设置环境可能仍然很棘手。我有时会发现这个页面上的提示很有用:https://cwiki.apache.org/confluence/display/BEAM/Python+Tips

希望能帮到你。


我下载了Beam Github项目,并按照您提供的步骤从头安装,但没有成功。即使nosetests通过,运行https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/wordcount_minimal.py时仍会出现AttributeError错误。 - Justin Miller
奇怪,这对我来说是有效的。在您拉取安装GitHub项目期间,您是否退出了Python3.6环境并重新进入? - Ruoyun Huang
是的。我拉取了项目,检出了release-2.12.0,创建了一个新的虚拟环境,按照你的步骤进行操作,运行了我上面链接的示例,并得到了相同的结果。 - Justin Miller
我明白了。现在我也看到了和你一样的错误。我怀疑这是由于从Python2.7转换到Python3还没有完全完成(即使没有,应该很快就会完成)。也许可以先使用Python2.7来开始?我切换到Python2.7后一切正常。 - Ruoyun Huang
是的,非常感谢您的所有帮助!虽然不是我所期望的解决方案,但我会继续使用Python2.7,直到Python3更加稳定。 - Justin Miller
显示剩余2条评论

0
为了解决这个错误,你可以打开一个新项目。然后重新安装 apace-beam。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接