Qiskit版本兼容问题求助:无法导入BasicAer及Self相关报错
Qiskit版本兼容问题求助:无法导入BasicAer及Self相关报错
兄弟,我之前也踩过老Qiskit代码适配新版的坑,给你两个靠谱的解决方案:
方案一:适配新版Qiskit,修改导入语句
从Qiskit 0.19版本开始,很多模块的结构做了调整,BasicAer不再放在根模块里了,你只需要修改导入语句就能解决问题:
- 把原来的:
替换成:from qiskit import BasicAerfrom qiskit.providers.basic import BasicAer - 另外,如果你需要用到IBMQ的
least_busy,新版Qiskit把IBM相关的模块独立成了qiskit-ibm-provider,你需要先安装这个包:
然后导入语句改成:pip install qiskit-ibm-providerfrom qiskit_ibm_provider import least_busy
其他导入比如QuantumRegister、QuantumCircuit这些暂时不用改,新版Qiskit依然支持从qiskit根模块导入。
方案二:降级到对应版本的Qiskit,解决Self报错
你的代码是2019年8月的,对应的Qiskit版本大概是0.12.0(正好是同期发布的),但这个版本只支持Python 3.6或3.7,如果你用的是Python 3.8+(比如你报错里的Python 3.10),就会出现依赖冲突导致Self报错,步骤如下:
- 先创建一个Python 3.7的虚拟环境(避免影响现有环境):
- 用conda:
conda create -n qiskit_old python=3.7 conda activate qiskit_old - 用venv:
python3.7 -m venv qiskit_old # Linux/macOS激活: source qiskit_old/bin/activate # Windows激活: qiskit_old\Scripts\activate
- 用conda:
- 安装指定版本的Qiskit:
pip install qiskit==0.12.0 - 如果还是出现
cannot import name 'Self' from 'typing_extensions'的报错,强制安装适配的typing_extensions版本:pip install typing_extensions==3.7.4.3
备注:内容来源于stack exchange,提问作者N89L21
相关产品推荐
相关产品推荐

