在Qiskit中运行Shor算法时遭遇ImportError导入错误
问题原因及解决办法
错误原因
这个导入错误源于Qiskit版本迭代后的模块结构调整:
- 从Qiskit 0.45.0版本开始,原
qiskit.algorithms模块中的Shor等算法被拆分到独立的qiskit_algorithms包中,核心Qiskit包不再包含这些算法实现。 - 若你安装的是较新的Qiskit版本,直接从
qiskit.algorithms导入Shor必然会失败。
解决办法
方案1:适配新版生态(推荐)
- 安装独立的算法包:
在终端运行以下命令:pip install qiskit-algorithms - 修改代码中的导入语句:
将原来的from qiskit.algorithms import Shor替换为:
同时,若使用from qiskit_algorithms import ShorQuantumInstance,新版中它被移到了qiskit_algorithms.utils,需要同步修改导入:
完整修改后的代码示例:from qiskit_algorithms.utils import QuantumInstance
更推荐使用新版的from qiskit import Aer from qiskit_algorithms import Shor from qiskit_algorithms.utils import QuantumInstance N = 15 backend = Aer.get_backend('aer_simulator') quantum_instance = QuantumInstance(backend, shots=1024) shor = Shor(quantum_instance=quantum_instance) result = shor.factor(N) print(f"The list of factors of {N} as computed by Shor's algorithm is {result.factors[0]}.")Sampler替代QuantumInstance,代码如下:from qiskit import Aer from qiskit_algorithms import Shor from qiskit.primitives import Sampler N = 15 sampler = Sampler(backend=Aer.get_backend('aer_simulator')) shor = Shor(sampler=sampler) result = shor.factor(N) print(f"The list of factors of {N} as computed by Shor's algorithm is {result.factors[0]}.")
方案2:回退到旧版Qiskit(不推荐)
如果不想修改代码,可以回退到0.44.x版本(该版本中Shor仍在qiskit.algorithms下):
pip uninstall qiskit -y pip install qiskit==0.44.0
注意:旧版本不再接收更新,可能存在安全隐患和功能缺失。
内容的提问来源于stack exchange,提问作者Anita Pandey
相关产品推荐
相关产品推荐

