How to fix `AttributeError: module 'apache_beam.coders.coders' has no attribute 'VarIntCoder'`

How to fix `AttributeError: module 'apache_beam.coders.coders' has no attribute 'VarIntCoder'`

我正在构建 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'

更新:

实际上错误是由于 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

希望对您有所帮助。

我在使用 apache-beam 编写自己的数据管道时发现了一个非常奇怪的行为:只要在名为 test.py.

的文件中有一个管道,就会出现这种行为

假设您在 main.py 中有当前的实现,您只需将整个代码复制到 test.py 文件中,然后它会在两个文件上产生错误。

我现在解决此问题的唯一方法是删除 test.py 或将其重命名为其他名称,然后问题就消失了。

为了修复这个错误,您可以打开一个新项目。然后,重新安装 apace-beam。

对于那些使用 Google Colab 的人,我遇到了同样的错误并通过 重新启动运行时和 运行 整个笔记本来解决再次.

我的进口商品是

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