导入Qiskit时出现ImportError报错的原因是什么?
ImportError: dlopen(/opt/anaconda3/lib/python3.8/site-packages/tweedledum/_tweedledum.cpython-38-darwin.so, 2): Symbol not found: _aligned_alloc Referenced from: /opt/anaconda3/lib/python3.8/site-packages/tweedledum/_tweedledum.cpython-38-darwin.so Expected in: /usr/lib/libSystem.B.dylib in /opt/anaconda3/lib/python3.8/site-packages/tweedledum/_tweedledum.cpython-38-darwin.so
报错原因
这是Qiskit的依赖库tweedledum与旧版macOS系统不兼容导致的错误,触发逻辑如下:
_aligned_alloc是macOS 10.15(Catalina)版本才正式加入系统标准库的函数- 你当前安装的tweedledum预构建包是针对更高版本macOS编译生成的,运行时无法在旧版系统的
libSystem.B.dylib库中找到对应符号,因此抛出导入错误 - 你当前使用的macOS版本肯定低于10.15
修复方案
- 方案一:降级tweedledum到兼容旧系统的版本
执行以下pip命令即可:pip install tweedledum==1.1.1
1.1.1是tweedledum官方最后一批提供macOS 10.14及更低版本预编译包的版本,安装完成后即可正常导入Qiskit。 - 方案二:升级macOS系统
将系统升级到10.15(Catalina)及以上版本,可完美适配所有最新版Qiskit及其依赖,不会再出现同类兼容性问题。 - 方案三:本地源码编译安装tweedledum
不想升级系统也不想降级依赖的情况下可选择该方案,首先安装Xcode命令行工具:xcode-select --install
再执行源码编译命令,编译过程会自动适配你当前的系统库配置:pip install --no-binary :all: tweedledum - 方案四(conda环境专用):
如果你用Anaconda管理环境,可直接从conda-forge源安装适配版本:conda install -c conda-forge tweedledum=1.1.1
内容的提问来源于stack exchange,提问作者A. Fattal
相关产品推荐
相关产品推荐

