Mac M1 Monterey系统导入azure-eventhub时Python报错求助
Azure EventHub 导入错误修复方案(Mac M1环境)
问题背景
运行环境:Mac M1 机器,Python 3.10.6,pip 22.2.2,已执行pip install azure-eventhub。
尝试导入以下模块:
from azure.eventhub import EventData from azure.eventhub.aio import EventHubProducerClient from azure.eventhub.exceptions import EventHubError
出现如下错误:
from azure.eventhub import EventData Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/azure/eventhub/__init__.py", line 5, in <module> from ._common import EventData, EventDataBatch File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/azure/eventhub/_common.py", line 24, in <module> from ._utils import ( File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/azure/eventhub/_utils.py", line 33, in <module> from uamqp import types as uamqp_types File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/uamqp/__init__.py", line 12, in <module> from uamqp import c_uamqp # pylint: disable=import-self ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/uamqp/c_uamqp.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '_SASToken_CreateString' >>> from azure.eventhub.aio import EventHubProducerClient Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/azure/eventhub/__init__.py", line 5, in <module> from ._common import EventData, EventDataBatch File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/azure/eventhub/_common.py", line 24, in <module> from ._utils import ( File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/azure/eventhub/_utils.py", line 33, in <module> from uamqp import types as uamqp_types File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/uamqp/__init__.py", line 12, in <module> from uamqp import c_uamqp # pylint: disable=import-self ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/uamqp/c_uamqp.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '_SASToken_CreateString' >>> from azure.eventhub.exceptions import EventHubError Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/azure/eventhub/__init__.py", line 5, in <module> from ._common import EventData, EventDataBatch File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/azure/eventhub/_common.py", line 24, in <module> from ._utils import ( File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/azure/eventhub/_utils.py", line 33, in <module> from uamqp import types as uamqp_types File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/uamqp/__init__.py", line 12, in <module> from uamqp import c_uamqp # pylint: disable=import-self ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/uamqp/c_uamqp.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '_SASToken_CreateString'
修复方案
该错误源于M1芯片的arm64架构与uamqp预编译二进制包不兼容,以下是三种可行修复方式:
方式一:使用Rosetta 2兼容模式
- 打开终端应用,右键选择「显示简介」,勾选「使用Rosetta打开」,重启终端。
- 卸载现有冲突包:
pip uninstall -y azure-eventhub uamqp - 重新安装包:
pip install azure-eventhub
方式二:源码编译安装兼容版本
- 先确保安装了Xcode命令行工具:
xcode-select --install - 卸载现有包:
pip uninstall -y azure-eventhub uamqp - 从源码编译安装
uamqp:pip install uamqp --no-binary :all: - 重新安装
azure-eventhub:pip install azure-eventhub
方式三:升级到最新兼容版本
尝试直接升级azure-eventhub到最新版,新版本可能已修复M1兼容问题:
pip install --upgrade azure-eventhub
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

