在 Mac 上尝试在 python3 中导入 apache_beam 时引发致命的 protobuf 错误

在 Mac 上尝试在 python3 中导入 apache_beam 时引发致命的 protobuf 错误

尝试导入 apache_beam

>>> import apache_beam

抛出致命错误

[libprotobuf ERROR google/protobuf/descriptor_database.cc:58] 数据库中文件已存在:
[libprotobuf FATAL google/protobuf/descriptor.cc:1370] 检查失败:
GeneratedDatabase()->Add(encoded_file_descriptor, size):
libc++abi.dylib:因未捕获的 google::protobuf::FatalException 类型异常而终止:
检查失败:GeneratedDatabase()->Add(encoded_file_descriptor, size):

我已经设法通过使用系统安装的 pythonvirtualenv创建的程序来重现这个问题。pyenv

我从其他帖子得知,这是libprotobuf加载两次的问题。不过,令我困扰的是,第一个错误没有报告数据库中存在哪个文件。

正在运行python -v表明问题与有关pyarrow,这是 apache_beam 在崩溃前导入的最后一个依赖项。我确实尝试在 apache_beam 之前安装 pyarrow,并且加载正常。但是,apache_beam 卸载然后重新安装它,这可能导致链接器错误。

关于如何使 apache_beam 工作有什么建议吗?

答案1

如果你最近将 macos 升级到 Catalina,那么此错误是由 pyarrow 引起的(已在https://issues.apache.org/jira/browse/BEAM-8368

临时解决方案是固定 pyarrow < 0.14.0

相关内容