无法从“pydantic”导入名称“ConfigDict”

问题描述 投票:0回答:1

我目前正在探索量子计算的一些最新更新,并决定运行 IBM 教程中的一段代码,以更好地理解新功能。但是,我遇到了一个技术问题,我希望这里有人能够解答这个问题。尽管在网上搜索,我找不到与此问题相关的任何内容。

这是我收到的错误消息:

--------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
/home/jovyan/m_class.ipynb Cell 3 line 1
----> 1 from qiskit_ibm_runtime import QiskitRuntimeService, Session
      2 from qiskit_ibm_runtime import SamplerV2 as Sampler
      3 from qiskit_ibm_runtime import EstimatorV2 as Estimator

File ~/.local/lib/python3.10/site-packages/qiskit_ibm_runtime/__init__.py:219
    216 from .utils.utils import setup_logger
    217 from .version import __version__
--> 219 from .estimator import (  # pylint: disable=reimported
    220     EstimatorV2,
    221     EstimatorV1,
    222     EstimatorV1 as Estimator,
    223 )
    224 from .sampler import (  # pylint: disable=reimported
    225     SamplerV2,
    226     SamplerV1,
    227     SamplerV1 as Sampler,
    228 )
    229 from .options import Options, EstimatorOptions, SamplerOptions

File ~/.local/lib/python3.10/site-packages/qiskit_ibm_runtime/estimator.py:30
     28 from .runtime_job_v2 import RuntimeJobV2
     29 from .ibm_backend import IBMBackend
---> 30 from .options import Options
     31 from .options.estimator_options import EstimatorOptions
     32 from .base_primitive import BasePrimitiveV1, BasePrimitiveV2

File ~/.local/lib/python3.10/site-packages/qiskit_ibm_runtime/options/__init__.py:98
      1 # This code is part of Qiskit.
      2 #
      3 # (C) Copyright IBM 2022, 2024
   (...)
     10 # copyright notice, and modified files need to carry a notice indicating
     11 # that they have been altered from the originals.
     13 """
     14 =====================================================
     15 Primitive options (:mod:`qiskit_ibm_runtime.options`)
   (...)
     95 
     96 """
---> 98 from .environment_options import EnvironmentOptions
     99 from .execution_options import ExecutionOptions
    100 from .execution_options import ExecutionOptionsV2

File ~/.local/lib/python3.10/site-packages/qiskit_ibm_runtime/options/environment_options.py:17
     13 """Options related to the execution environment."""
     15 from typing import Optional, Callable, List, Literal
---> 17 from .utils import primitive_dataclass
     19 LogLevelType = Literal[
     20     "DEBUG",
     21     "INFO",
   (...)
     24     "CRITICAL",
     25 ]
     28 @primitive_dataclass
     29 class EnvironmentOptions:

File ~/.local/lib/python3.10/site-packages/qiskit_ibm_runtime/options/utils.py:23
     20 from dataclasses import is_dataclass, asdict
     21 from numbers import Real
---> 23 from pydantic import ConfigDict, ValidationInfo, field_validator
     24 from pydantic.dataclasses import dataclass
     26 from qiskit.providers.backend import Backend

ImportError: cannot import name 'ConfigDict' from 'pydantic' (/home/jovyan/.local/lib/python3.10/site-packages/pydantic/__init__.py)

来自以下代码:

from qiskit_ibm_runtime import QiskitRuntimeService, Session
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit.circuit.library import RealAmplitudes
from qiskit.circuit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
 
# Initialize account.
service = QiskitRuntimeService()
 
# Prepare inputs.
psi = RealAmplitudes(num_qubits=2, reps=2)
H1 = SparsePauliOp.from_list([("II", 1), ("IZ", 2), ("XI", 3)])
theta = [0, 1, 1, 2, 3, 5]
# Bell Circuit
qr = QuantumRegister(2, name="qr")
cr = ClassicalRegister(2, name="cr")
qc = QuantumCircuit(qr, cr, name="bell")
qc.h(qr[0])
qc.cx(qr[0], qr[1])
qc.measure(qr, cr)
 
backend = service.least_busy(operational=True, simulator=False)
pm = generate_preset_pass_manager(target=backend.target, optimization_level=1)
 
bell_isa_circuit = pm.run(qc)
psi_isa_circuit = pm.run(psi)
isa_observables = H1.apply_layout(psi_isa_circuit.layout)
 
with Session(service=service, backend=backend) as session:
    # Submit a request to the Sampler primitive within the session.
    sampler = Sampler(session=session)
    job = sampler.run([bell_isa_circuit])
    pub_result = job.result()[0]
    print(f"Counts: {pub_result.data.cr.get_counts()}")
 
    # Submit a request to the Estimator primitive within the session.
    estimator = Estimator(session=session)
    estimator.options.resilience_level = 1  # Set options.
    job = estimator.run(
        [(psi_isa_circuit, isa_observables, theta)]
    )
    pub_result = job.result()[0]
    print(f"Expectation values: {pub_result.data.evs}")

还有其他人遇到过这种情况吗?或者有人知道可能导致此问题的原因吗?

python qiskit error-correction
1个回答
1
投票
---> 23 from pydantic import ConfigDict, ValidationInfo, field_validator
     24 from pydantic.dataclasses import dataclass
     26 from qiskit.providers.backend import Backend

ImportError: cannot import name 'ConfigDict' from 'pydantic' (/home/jovyan/.local/lib/python3.10/site-packages/pydantic/__init__.py)

您是否在 /home/jovyan/.local/lib/python3.10/site-packages/pydantic/config.py .. 中定义了 ConfigDict 类?查看您的错误消息,似乎该模块丢失了。

© www.soinside.com 2019 - 2024. All rights reserved.