【问题标题】:How to fix `AttributeError: module 'apache_beam.coders.coders' has no attribute 'VarIntCoder'`如何修复`AttributeError:模块'apache_beam.coders.coders'没有属性'VarIntCoder'`
【发布时间】:2019-05-20 16:04:29
【问题描述】:

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

【问题讨论】:

    标签: python apache-beam


    【解决方案1】:

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

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

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

    【讨论】:

    • 这非常奇怪,几分钟前我只想测试 beam 并将其命名为 test.py
    • 这很奇怪,但重命名确实有帮助。
    • 可以确认这对我来说也是如此,正如公认的答案所暗示的那样,在摆弄环境之后。
    • 感谢您提及这一点,它为我节省了数小时的调试时间。这正是我所经历的。将驱动程序文件重命名为 test.py 以外的名称,一切正常。
    • 我损失了 2 个小时,因为 test.py 的这个错误非常感谢你,我删除它并且一切正常。
    【解决方案2】:

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

    我的进口是

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

    【讨论】:

      【解决方案3】:

      更新:

      其实这个错误是由于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

      希望对您有所帮助。

      【讨论】:

      • 我拉了 beam github 项目并使用您的步骤从头开始安装,但没有运气。 AttributeError 在运行 github.com/apache/beam/blob/master/sdks/python/apache_beam/… 时发生,即使鼻子测试通过了
      • 奇怪,它对我有用。在你的github项目拉安装过程中,你有没有退出你的python3.6环境并重新进入?
      • 是的。我拉了项目,检查了 release-2.12.0,创建了一个新的虚拟环境,按照你的步骤,运行了我上面链接的例子,得到了相同的结果
      • 我在 release-2.12 、 release-2.13 和 master head 之间来回切换。它们中的每一个都有效(重复上述设置步骤后)。我要运行的命令是“python -m apache_beam.examples.wordcount --output=/tmp/out*”。你在用linux吗?
      • 好的,所以python -m apache_beam.examples.wordcount --output=/tmp/out* 在我从基本 apache_beam 目录运行它时可以工作,但是当我 cd 到我的自定义项目目录时,相同的命令会因错误而中断。我正在运行 Ubuntu
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2019-05-25
        • 2019-08-25
        • 2020-09-03
        • 2020-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多