You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qiskit 2.0环境下BaseEstimator导入错误及版本兼容问题求助

Qiskit版本兼容导致的导入错误解决方法

问题背景

当前conda环境(/opt/anaconda3/envs/qnn)内Qiskit相关包版本:

conda list qiskit
# packages in environment at /opt/anaconda3/envs/qnn:
#
# Name                    Version                   Build  Channel
qiskit                    2.0.0           py312hcd83bfe_0    conda-forge
qiskit-aer                0.17.0                   pypi_0    pypi
qiskit-ibm-runtime        0.37.0                   pypi_0    pypi
qiskit-machine-learning   0.8.2              pyhd8ed1ab_1    conda-forge

执行导入代码时:

import numpy as np
import pandas as pd
from qiskit import QuantumCircuit
from qiskit.circuit import Parameter
from qiskit.quantum_info import SparsePauliOp
from qiskit.primitives import StatevectorEstimator as Estimator
from qiskit_machine_learning.neural_networks import EstimatorQNN

出现以下错误:

ImportError:
----> 8 from qiskit_machine_learning.neural_networks import EstimatorQNN

[...]

File /opt/anaconda3/envs/qnn/lib/python3.12/site-packages/qiskit_machine_learning/neural_networks/effective_dimension.py:23
...
---> 24 from qiskit.primitives import BaseEstimator, BaseEstimatorV1, Estimator, EstimatorResult
     25 from qiskit.quantum_info import SparsePauliOp
     26 from qiskit.quantum_info.operators.base_operator import BaseOperator

ImportError: cannot import name 'BaseEstimator' from 'qiskit.primitives' (/opt/anaconda3/envs/qnn/lib/python3.12/site-packages/qiskit/primitives/__init__.py)

单独执行from qiskit.primitives import Estimator也报错:

ImportError: cannot import name 'Estimator' from 'qiskit.primitives' (/opt/anaconda3/envs/qnn/lib/python3.12/site-packages/qiskit/primitives/__init__.py)

尝试降级Qiskit到0.44.0未解决,通过conda升级qiskit-machine-learning到0.9.0时出现包未找到错误:

conda install -c conda-forge qiskit-machine-learning=0.9.0
Channels:
 - conda-forge
 - defaults
Platform: osx-arm64
Collecting package metadata (repodata.json): done
Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:
  - qiskit-machine-learning=0.9.0*

解决方案

1. 核心原因说明

Qiskit 2.0.0是重大版本更新,重构了primitives模块:原Estimator被拆分为StatevectorEstimator、SamplerEstimator等具体实现,且移除了BaseEstimator这类V1版本的抽象类。而qiskit-machine-learning 0.8.2依赖的是Qiskit 0.4x系列的旧primitives结构,因此出现兼容问题。

qiskit-machine-learning 0.9.0才适配Qiskit 2.0.0,但conda-forge的osx-arm64通道暂未提供该版本,需改用pip安装。

2. 具体操作步骤

  • 步骤1:卸载现有冲突包
    先移除当前的Qiskit核心包和机器学习包,避免版本残留:

    conda remove qiskit qiskit-machine-learning -y
    pip uninstall qiskit-aer qiskit-ibm-runtime -y
    
  • 步骤2:安装适配的版本组合
    有两种稳定组合可选:

    • 组合一:Qiskit 2.0.0 + qiskit-machine-learning 0.9.0(推荐)
      用conda安装核心Qiskit,pip安装适配的机器学习扩展包:

      conda install -c conda-forge qiskit=2.0.0 -y
      pip install qiskit-machine-learning==0.9.0 qiskit-aer==0.18.0 qiskit-ibm-runtime==0.38.0
      

      注:qiskit-aer 0.18.0和qiskit-ibm-runtime 0.38.0是适配Qiskit 2.0.0的对应版本。

    • 组合二:Qiskit 0.44.1 + qiskit-machine-learning 0.8.2(兼容旧代码)
      如果不想升级到Qiskit 2.0,需确保所有依赖包版本同步匹配:

      conda install -c conda-forge qiskit=0.44.1 qiskit-machine-learning=0.8.2 -y
      pip install qiskit-aer==0.17.1 qiskit-ibm-runtime==0.37.1
      

      注:之前降级到0.44.0未解决问题,大概率是因为qiskit-aer、qiskit-ibm-runtime等依赖包版本未同步降级导致的。

  • 步骤3:验证导入
    重新运行导入代码,确认无错误:

    import numpy as np
    import pandas as pd
    from qiskit import QuantumCircuit
    from qiskit.circuit import Parameter
    from qiskit.quantum_info import SparsePauliOp
    # 对于Qiskit 2.0,Estimator需从具体实现导入,或用别名
    from qiskit.primitives import StatevectorEstimator as Estimator
    from qiskit_machine_learning.neural_networks import EstimatorQNN
    

3. 后续注意事项

  • 尽量避免混用conda和pip安装Qiskit相关包,优先保持同一安装源;若必须混用,建议用conda安装核心Qiskit包,pip安装扩展包。
  • 安装前确认qiskit-machine-learning的版本兼容要求,确保与Qiskit核心版本匹配。

内容的提问来源于stack exchange,提问作者diogomaia00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 12:30:58