Qiskit Nature中'units'子模块去向及教程适配疑问
问题原因与解决方案
模块去向与重构背景
这确实是Qiskit Chemistry迁移到Qiskit Nature时的架构重构导致的。在Qiskit Nature早期迁移阶段,units模块曾短暂存在,但后续版本(包括你安装的适配Python 3.6的版本)对模块结构做了精简,DistanceUnit这类单位枚举被合并到qiskit_nature.constants模块中,原units模块被移除。
修正后的代码
你可以通过两种方式修正代码:
方法1:导入新位置的DistanceUnit
from qiskit_nature.constants import DistanceUnit from qiskit_nature.second_q.drivers import PySCFDriver driver = PySCFDriver( atom="H 0 0 0; H 0 0 0.735", basis="sto3g", charge=0, spin=0, unit=DistanceUnit.ANGSTROM, )
方法2:直接使用字符串参数(更简洁)
PySCFDriver的unit参数支持直接传入单位字符串,无需导入枚举:
from qiskit_nature.second_q.drivers import PySCFDriver driver = PySCFDriver( atom="H 0 0 0; H 0 0 0.735", basis="sto3g", charge=0, spin=0, unit="angstrom", )
教程未同步的原因
Qiskit生态版本迭代较快,官方教程的更新有时会滞后于代码的重构。尤其是Qiskit Nature作为从原Qiskit Chemistry拆分出的新模块,初期架构调整频繁,部分旧版本教程没有及时跟进到最新的模块结构。
内容的提问来源于stack exchange,提问作者Tico
相关产品推荐
相关产品推荐

