Qiskit库问题:上周可用的量子计算代码当前无法运行求助
问题描述
这段量子计算代码上周还能正常运行,已确认pip安装命令为最新版本且环境配置正确。在Windows和MacOS系统间交替开发该代码,这或许是问题诱因之一?请问代码为何无法运行?
注: 已隐去敏感的provider信息,并非全部是X。
import numpy as np from collections import defaultdict from qiskit import Aer from qiskit.visualization import plot_histogram from qiskit.utils import QuantumInstance from qiskit.algorithms import Grover, AmplificationProblem from qiskit.circuit.library import PhaseOracle from qiskit.compiler import transpile from qiskit import assemble from qiskit import IBMQ from qiskit import execute from qiskit.tools import job_monitor import matplotlib.pyplot as plt IBMQ.save_account('xxxxxxx', overwrite=True) IBMQ.load_account() provider = IBMQ.get_provider(hub='xxxx', group='xxxx', project='xxxx') device = provider.get_backend('ibmq_kolkata') circuit_list = [] verification_list = []
报错信息:
--------------------------------------------------------------------------- ImportError Traceback (most recent call last) ~\AppData\Roaming\Python\Python38\site-packages\qiskit\__init__.py in __getattr__(self, attr) 147 try: ---> 148 from qiskit.providers import ibmq 149 ~\anaconda3\envs\qc_env\lib\site-packages\qiskit\providers\ibmq\__init__.py in <module> 85 ----> 86 from qiskit.providers import BaseBackend, Backend # type: ignore[attr-defined] 87 ImportError: cannot import name 'BaseBackend' from 'qiskit.providers' (C:\Users\Ahmad\AppData\Roaming\Python\Python38\site-packages\qiskit\providers\__init__.py) The above exception was the direct cause of the following exception: MissingOptionalLibraryError Traceback (most recent call last) <ipython-input-2-63cbbaf81b4b> in <module> 14 import matplotlib.pyplot as plt 15 #import mapomatic as mm ---> 16 IBMQ.save_account('xxxxxxx', overwrite=True) 17 IBMQ.load_account() 18 #provider = IBMQ.get_provider(hub = 'ibm-q') ~\AppData\Roaming\Python\Python38\site-packages\qiskit\__init__.py in __getattr__(self, attr) 150 self.ibmq = ibmq.IBMQ 151 except ImportError as ex: ---> 152 raise MissingOptionalLibraryError( 153 "qiskit-ibmq-provider", "IBMQ provider", "pip install qiskit-ibmq-provider" 154 ) from ex MissingOptionalLibraryError: "The 'qiskit-ibmq-provider' library is required to use 'IBMQ provider'. You can install it with 'pip install qiskit-ibmq-provider'."
问题分析与解决方案
核心原因
- Qiskit版本不兼容:报错里的
ImportError: cannot import name 'BaseBackend'说明qiskit-ibmq-provider和核心qiskit版本不匹配。Qiskit新版本中BaseBackend已被重构或移除,但你的qiskit-ibmq-provider仍在尝试导入这个旧类。 - 跨环境依赖混乱:在Windows和MacOS间交替开发时,两个环境的Qiskit依赖包版本可能不一致,或者某次更新只在一个环境完成,导致版本冲突。
解决步骤
1. 修复版本不兼容问题
先卸载现有相关包,再安装版本匹配的组合:
pip uninstall -y qiskit qiskit-ibmq-provider # 安装完整Qiskit包(自动匹配所有依赖版本) pip install qiskit[all] # 或指定兼容版本(示例版本,可根据官方文档调整) pip install qiskit==0.45.0 qiskit-ibmq-provider==0.20.2
2. 统一跨环境依赖
- 在其中一个正常运行的环境导出依赖清单:
pip freeze > requirements.txt - 在另一个环境使用清单安装,确保依赖完全一致:
pip install -r requirements.txt
3. 清理导入路径冲突
报错显示qiskit包同时存在于用户目录的Python包路径和conda环境路径中,这会导致导入混乱。需:
- 清理其中一个路径下的Qiskit相关文件;
- 确保激活conda环境时,优先使用环境内的包(避免系统级Python包干扰)。
内容的提问来源于stack exchange,提问作者Ahmad Bennakhi
相关产品推荐
相关产品推荐

