
Qiskit 升级至 1.0+ 后,from qiskit import execute 将报错,因该函数已被正式移除;需改用 qiskit.primitives 模块中的 Sampler 或 Estimator,或通过 backend.run() 直接提交电路。
qiskit 升级至 1.0+ 后,`from qiskit import execute` 将报错,因该函数已被正式移除;需改用 `qiskit.primitives` 模块中的 `sampler` 或 `estimator`,或通过 `backend.run()` 直接提交电路。
在 Qiskit 0.x 版本(如 0.45)中,execute() 是核心执行接口,用于运行量子电路并返回 Job 对象:
from qiskit import QuantumCircuit, transpile
from qiskit.providers.aer import AerSimulator
from qiskit import execute # ✅ Qiskit <p><strong>自 Qiskit 1.0 起(2023年12月发布),execute 已被完全移除</strong>,取而代之的是更模块化、语义更清晰的原语(primitives)接口:</p><h3>✅ 推荐替代方案(Qiskit ≥ 1.0)</h3><h4>方案一:使用 Sampler(推荐用于采样任务,如测量结果统计)</h4><pre class="brush:php;toolbar:false;">from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
from qiskit.primitives import Sampler
circuit = QuantumCircuit(2)
circuit.h(0)
circuit.cx(0, 1)
circuit.measure_all()
# 初始化 Sampler(可绑定本地模拟器或远程硬件后端)
sampler = Sampler(backend=AerSimulator())
# 执行并获取概率分布/Counts
job = sampler.run(circuit, shots=1024)
result = job.result()
quasi_dist = result.quasi_dists[0] # 近似概率分布
counts = result.metadata[0]["counts"] # 原始计数(若 backend 支持)
print(counts) # e.g., {'00': 512, '11': 512}方案二:直接调用 backend.run()(轻量、兼容旧习惯)
from qiskit import QuantumCircuit from qiskit_aer import AerSimulator circuit = QuantumCircuit(2) circuit.h(0) circuit.cx(0, 1) circuit.measure_all() backend = AerSimulator() job = backend.run(circuit, shots=1024) # ✅ 完全替代 execute(...) result = job.result() counts = result.get_counts() print(counts)
? 注意事项:
- 确保安装了 qiskit-aer(本地仿真)和 qiskit-ibm-runtime(若使用 IBM Cloud 硬件);
- qiskit.primitives.Sampler 和 Estimator 是 Qiskit 1.0 的标准接口,支持批处理、噪声建模与硬件优化;
- 若项目依赖大量旧代码,可参考 Qiskit 1.0 迁移指南 进行系统性重构;
- 不建议降级 Qiskit 回 0.x —— 旧版本已停止维护,且不兼容新版 IBM Quantum 服务。
总之,告别 execute 并非退步,而是迈向更健壮、可扩展的量子编程范式。掌握 Sampler 与 backend.run() 是现代 Qiskit 开发者的必备技能。










