Skip to main content
IBM Quantum Platform

Qiskit C APIをインストールする

このガイドでは、Qiskit C API のインストール方法と使用方法について説明します。 インストールが完了したら、 「Qiskit C API を使用した Python の拡張」 をお読みください。

以下の例では、C言語でobservableを構築しています:

// file: example.c
#include <stdio.h>
#include <stdint.h>
#include <qiskit.h>

int main(int argc, char *argv[]) {
    // build a 100-qubit empty observable
    uint32_t num_qubits = 100;
    QkObs *obs = qk_obs_zero(num_qubits);

    // add the term 2 * (X0 Y1 Z2) to the observable
    QkComplex64 coeff = {2, 0};
    QkBitTerm bit_terms[3] = {QkBitTerm_X, QkBitTerm_Y, QkBitTerm_Z}; 
    // bit terms: X Y Z
    uint32_t indices[3] = {0, 1, 2};  // indices: 0 1 2
    QkObsTerm term = {coeff, 3, bit_terms, indices, num_qubits};
    qk_obs_add_term(obs, &term);  // append the term

    // print some properties and the observable itself
    printf("num_qubits: %i\n", qk_obs_num_qubits(obs));
    printf("num_terms: %lu\n", qk_obs_num_terms(obs));
    printf("observable: %s\n", qk_obs_str(obs));

    // free the memory allocated for the observable
    qk_obs_free(obs);

    return 0;
}

UNIXライク

このセクションでは、UNIXライクなシステム用のビルド手順を説明する。

要件

コンパイルには以下のツールが必要:

  • Rustコンパイラ: 例えば Qiskitをソースからインストールするガイドを参照してください
  • C コンパイラ:例えば、 Linux の GCC や MacOS の Clang など。 QiskitのC APIは、標準に準拠したコンパイラと互換性があります。 C11 規格に準拠したコンパイラと互換性があります。
  • /path/to/.cargo/bincbindgen: Cヘッダーを作成するためのツールで、以下のコマンドでインストールできます。 cargo install cbindgen コマンドラインからこのツールを実行できるようにしておく必要があります。そのためには、変数をエクスポートして. PATH をインクルードする必要がある場合があります。
  • Python ライブラリがインストール済み( Python 3.9 +):動的リンク時には、 Python ライブラリが必要です。 libpythonPython は実行時には使用されず、インタプリタも初期化されることはない点に注意してください。定義する必要があるのは、に含まれる一部のシンボルだけです。 詳細については、本号をご覧ください。
  • (GNU) Make: これはオプションですが、自動インストールプロセスを使用することを推奨します。

このコードは、すべてがインストールされたことを確認する:

rustc --version
gcc --version
cbindgen --version
make --version  # optional, but recommended

ビルド

Cヘッダとライブラリをビルドするには、Qiskitルートで以下のMakeコマンド1

make c

これは、 dist/c/lib のコンパイル済み共有ライブラリと、 qiskit.h のヘッダーと、 のすべての関数宣言を提供する。 dist/c/includeのすべての関数宣言を提供する。 正確なライブラリ名はプラットフォームに依存する。 例えば、UNIXではlibqiskit.so 、 MacOS では libqiskit.dylib となります。 (現在、このステップは多くの警告を発しているが、これは予想されたことであり、心配する必要はない。 将来のバージョンでは警告は削除される)

その後、Qiskit Cヘッダーとライブラリを使用してCプログラムをコンパイルできます:

gcc example.c -o example.o -I /path/to/dist/c/include -L /path/to/dist/c/lib -lqiskit

リンク時にQiskitライブラリが見つかるようにするには、ランタイムライブラリパスを次のように設定します。 インクルード /path/to/dist/c/lib. ダイナミック・リンク時に Python ライブラリがデフォルトで利用できない場合、 も追加する必要がある。 これらのコマンドはプラットフォームによって異なる。 Linux の場合:

export LD_LIBRARY_PATH=/path/to/dist/c/lib:$LD_LIBRARY_PATH
# On Linux, the Python library is typically included 
# in the dynamic library path by default.
export LD_LIBRARY_PATH=/path/to/python/lib:$LD_LIBRARY_PATH

MacOS の場合:

export DYLD_LIBRARY_PATH=/path/to/dist/c/lib:$DYLD_LIBRARY_PATH
export DYLD_LIBRARY_PATH=/path/to/python/lib:$DYLD_LIBRARY_PATH

あるいは、コンパイル時にランタイム・ライブラリのパスを設定することもできます

-Wl,-rpath,/path/to/dist/c/lib
# same for Python

をコンパイラ・フラグに追加する。 さらに、 Python ライブラリはダイナミックリンク時に利用可能である必要がある。 Linux 環境では がデフォルトである。

これでバイナリを実行できる:

./example.o

と表示されるはずである

num_qubits: 100
num_terms: 1
observable: SparseObservable { num_qubits: 100, 
coeffs: [Complex { re: 2.0, im: 0.0 }], 
bit_terms: [X, Y, Z], 
indices: [0, 1, 2], 
boundaries: [0, 3] }

Windows (US)

このセクションでは、Windowsシステム用のビルド手順を説明します。

Windows で C API を使用するには、2 つの独立した方法があります

  • Qiskit C API を使用する Python 拡張モジュールを構築します。 手順1~5に従ってください。 qiskit この方法では、 Python パッケージに同梱されているCヘッダーを使用するため、Rustやcbindgenは必要ありません。
  • UNIX系セクションで行われているように、純粋なCプログラムからリンクするためのスタンドアロンCライブラリをビルドします。 手順 1 を完了したら、 「スタンドアロンライブラリのビルド」 のセクションに進んでください。そこには追加の要件が記載されています。

要件

  • 一部の手順では、管理者権限が必要です。
  • 5~8 GBの空きディスク容量。
  • C言語コンパイラ:Microsoft Visual C++ (MSVC)。手順1でインストール済み。
  • 手順 1 でインストールした 64 ビット版の Python ( 3.10 以降)。

開始前に

ワークスペースを作成してください。 これは、ローカルドライブ上の短いパスである必要があります。 OneDrive-synced フォルダ(「ドキュメント」や「デスクトップ」など)、ネットワークドライブ、およびスペースや非ASCII文字を含むパスは使用しないでください。 ユーザー名に英語以外の文字が含まれている場合は、そのユーザー名をユーザーフォルダの下に置かないでください。

適切なワークスペースパスの例: C:\workspace, D:\workspace, C:\Users\john\workspace

ステップ 1. 前提条件のインストール

  • このファイルは容量が大きいため(2~5 GB、ダウンロードに10~30分かかります)、ダウンロードには時間がかかります。 まずインストールして、お使いのパソコンが対応しているかどうかをすぐに確認してください。

    Note

    管理者権限が必要です。

    オプション A — winget PowerShell のターミナルを開き、以下のコマンドを実行します:

    winget install Microsoft.VisualStudio.2022.BuildTools --override "--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --passive --wait"

    インストーラーの実行中、ターミナルがフリーズしているように見えます。 これは正常な現象であり、10~30分ほどかかります。 タスクバーに「Visual Studio Installer」ウィンドウが表示されているか確認してください。

    が認識されない場合は winget 、Microsoft Store から App Installer を更新するか、方法 B をご利用ください。

    オプション B — 手動でのダウンロードVisual Studio Build Tools for C++ 」の Web サイトを開き、「Build Tools をダウンロード」をクリックします。 実行ファイルを実行して、インストールを開始してください。

    「Visual Studio のインストール」ウィンドウが開いたら、「ワークロード」タブで「C++ によるデスクトップ開発」を選択します。詳細については、 「Visual Studio への C および C++ サポートのインストール 」のページを参照してください。

  • winget install Microsoft.VisualStudio.CodeVisual Studio Code のサイトからVS Codeをダウンロードするか、以下のコマンドを実行してください。 ダウンロードした実行ファイルを実行して、VS Code をインストールしてください。

    インストールが完了したら、次の手順に進んでください:

    1. VS Code を開く
    2. C:\workspace[ファイル] → [フォルダを開く] をクリックし、ワークスペース(例:)を選択します。
    3. 「ターミナル」→「新しいターミナル」をクリックして、 PowerShell のターミナルを開きます。
    4. 左側の「拡張機能」アイコンをクリックするか、Ctrl+Shift+X キーを押してください。 ms-vscode.cpptools``ms-toolsai.jupyter``ms-python.python「拡張機能」ウィンドウで、、、を検索してインストールしてください。

    特に指示がない限り、このガイドに記載されている残りのコマンドは、VS Codeのターミナルで実行してください。 VS Codeのターミナルは、Windowsの標準コマンドプロンプトとの混同を防ぐため、デフォルトで PowerShell, に設定されています。

    ワークスペース変数を設定します。 workspaceたとえば、ワークスペースの名前が である場合は、次のように実行してください:

    $WORKSPACE = "C:\workspace"   # change to your workspace path
    mkdir $WORKSPACE -Force
    cd $WORKSPACE
  • Python 3.12 は、およびその他の依存関係に対して qiskit-aer 最も入手しやすいホイールを備えているため、推奨されます。 3.10 また、 3.11 も動作しますが、 3.13 以降では、一部のパッケージについて、あらかじめビルド済みのホイールが用意されていない場合があります。

    VS Codeのターミナルを開き、以下のコードを実行して、 Python の適切なバージョンを検出してください:

    # ── Pre-checks ───────────────────────────────────────────────────────────────
    if ($env:CONDA_DEFAULT_ENV -or $env:CONDA_PREFIX) {
        Write-Warning "Conda is active. Run 'conda deactivate' first, or open a new terminal."
        return
    }
    if ($env:VIRTUAL_ENV) {
        Write-Warning "A virtual environment is active: $env:VIRTUAL_ENV — run 'deactivate' first."
        return
    }
    
    # ── Detect Python ────────────────────────────────────────────────────────────
    $PYTHON_EXE = $null
    try {
        $ver  = (py -3 --version 2>&1) -replace "Python ", ""
        $bits = py -3 -c "import platform; print(platform.architecture()[0])"
        $path = py -3 -c "import sys; print(sys.executable)"
        if ($path -match "(?i)(anaconda|miniconda|miniforge|mambaforge|[/\\]conda[/\\]|[/\\]envs[/\\])") {
            Write-Host "Skipping conda-managed Python at: $path"
        } elseif ([version]$ver -ge [version]"3.10" -and $bits -eq "64bit") {
            $PYTHON_EXE = $path
            Write-Host "Python $ver (64-bit) found: $PYTHON_EXE"
        } else {
            Write-Host "Skipping ($ver, $bits) — need 3.10+ 64-bit"
        }
    } catch {}
    if (-not $PYTHON_EXE) {
        try {
            $ver  = (python --version 2>&1) -replace "Python ", ""
            $bits = python -c "import platform; print(platform.architecture()[0])"
            $path = python -c "import sys; print(sys.executable)"
            if ($path -match "(?i)(anaconda|miniconda|miniforge|mambaforge|[/\\]conda[/\\]|[/\\]envs[/\\])") {
                Write-Host "Skipping conda-managed Python at: $path"
            } elseif ([version]$ver -ge [version]"3.10" -and $bits -eq "64bit") {
                $PYTHON_EXE = $path
                Write-Host "Python $ver (64-bit) found: $PYTHON_EXE"
            } else {
                Write-Host "Skipping ($ver, $bits) — need 3.10+ 64-bit"
            }
        } catch {}
    }
    
    # Install Python 3.12 if it wasn't found.
    if (-not $PYTHON_EXE) {
        Write-Host "Not found. Installing Python 3.12..."
        winget install Python.Python.3.12
        Write-Host "Close and reopen the terminal, then rerun this snippet."
    }
    if ($PYTHON_EXE -and ($PYTHON_EXE -match '[^\x20-\x7E]')) {
        Write-Warning "Python path has non-ASCII characters. Keep your workspace on an ASCII path."
    }
    if ($PYTHON_EXE) { Write-Host "`$PYTHON_EXE = '$PYTHON_EXE'" }

    ダウンロードがうまくいかなかった場合、または手動でのダウンロードをご希望の場合は、 Python 3.12 をインストールするコード行をコメントアウトし、 Python のウェブサイトから Python 3.12 をダウンロードしてください。 実行ファイルを実行して、 Python をインストールしてください。 インストール中に「 Python をPATHに追加」を選択し、その後、上記のスニペットを再実行して、ファイルが正しく検出されることを確認してください。

    ノート
    • Microsoft Storeの Python は、C言語のヘッダーファイルが含まれていないため、絶対に使用しないでください。 Microsoft Store が開いてしまう python 場合は、[Windowsの設定] → [アプリ] → [アプリの詳細設定] → [アプリの実行エイリアス] の順に選択し、エイリアスを無効にしてください。

    • Anacondaをご利用の方:(base)というプレフィックスが消えるまで実行 conda deactivate してください。 それでも解決しない場合は、VS Codeで新しいターミナルを開いてください。

  • ラボのリポジトリをクローンする場合にのみ必要です。 winget install Git.Git を実行します。

ステップ 2 - Qiskit を使用して、 Python の仮想環境を設定する

  • VS Codeのターミナルを開き、リセットします:

    $WORKSPACE = "C:\workspace"   # change to your workspace path
    if (-not $PYTHON_EXE) {
        if (Get-Command py -ErrorAction SilentlyContinue) { $PYTHON_EXE = py -3 -c "import sys; print(sys.executable)" }
        elseif (Get-Command python -ErrorAction SilentlyContinue) { $PYTHON_EXE = python -c "import sys; print(sys.executable)" }
        else { Write-Host "Python not found — complete Step 1.3 first." ; return }
        Write-Host "`$PYTHON_EXE = '$PYTHON_EXE'"
    }
  • スクリプトの実行を許可し(ユーザーごとに1回)、その後、仮想環境を作成します:

    Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
    cd $WORKSPACE
    & $PYTHON_EXE -m venv .venv --prompt workspace
    .\.venv\Scripts\Activate.ps1

    アクティベーションの際に「スクリプトが無効になっています」という赤いエラーが表示された場合、その Set-ExecutionPolicy 行は実行されませんでした。 手動で実行してから、もう一度試してみてください。

    (workspace)プロンプトには、現在 が表示されているはずです。

    以下を確認

    Get-Command python | Select-Object -First 1 -ExpandProperty Source
    # → workspace\.venv\Scripts\python.exe
  • python -m pip install --upgrade pip setuptools wheel
    pip install "qiskit[visualization]>=2.4.2"
    pip install --prefer-binary qiskit-ibm-runtime qiskit-aer
    pip install notebook ipykernel ipywidgets  # optional: run the following Python steps in Jupyter

    --prefer-binary ソースからのコンパイル qiskit-aer を回避します。 それでもうまくいかない場合は qiskit-aer 、を試す pip install qiskit-aer --only-binary=:all: か、その手順をスキップしてください。 qiskit-aer これはオプションであり、ローカルシミュレーションの場合にのみ必要です。

    Note

    セットアップ後は絶対に実行 pip install --upgrade qiskit しないでください。 新しいマイナーバージョンにアップグレードすると、以前のバージョンに基づいてビルドされたC拡張機能が動作しなくなります。

ステップ 3 - MSVC 環境を読み込む

新しい Python セッションごとに(たとえば、Jupyterカーネルを再起動するたびに)、以下のコードを実行してください。 MSVCの開発環境を自動的に検出して読み込むため、 x64 の組み込みコマンドプロンプトを使用する必要はありません。

このドキュメントの例では、MSVC を使用して setuptools C 拡張モジュールをビルドしています。 qiskit.h``QISKIT_PYTHON_EXTENSION通常、init関数内で を定義し、 をインクルードし、 を呼び出します qk_import() 。 ビルド時には からの qiskit.capi.get_include() ヘッダーのみが必要であり、ライブラリはリンクされません。 詳細については、「 Python でC言語を使用してQiskitを拡張する」 を参照してください。

  • import os, sys, subprocess, glob, shutil
    
    def load_msvc_env():
        if os.name != "nt":
            return "Not Windows — the system C compiler is used as-is."
        if shutil.which("cl"):
            return "cl.exe is already available in this kernel."
    
        pf86 = os.environ.get("ProgramFiles(x86)", r"C:\Program Files (x86)")
        pf = os.environ.get("ProgramFiles", r"C:\Program Files")
        vcvars = None
    
        vswhere = os.path.join(pf86, "Microsoft Visual Studio", "Installer", "vswhere.exe")
        if os.path.isfile(vswhere):
            # vswhere outputs UTF-8 regardless of system locale
            inst = subprocess.run(
                [vswhere, "-latest", "-products", "*",
                 "-requires", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
                 "-property", "installationPath"],
                capture_output=True, text=True, encoding="utf-8").stdout.strip()
            if inst:
                cand = os.path.join(inst, "VC", "Auxiliary", "Build", "vcvars64.bat")
                if os.path.isfile(cand):
                    vcvars = cand
    
        if not vcvars:
            pat = os.path.join("Microsoft Visual Studio", "*", "*",
                               "VC", "Auxiliary", "Build", "vcvars64.bat")
            hits = glob.glob(os.path.join(pf86, pat)) + glob.glob(os.path.join(pf, pat))
            if hits:
                vcvars = sorted(hits)[-1]
    
        if not vcvars:
            return ("Could not find vcvars64.bat. Install MSVC Build Tools (Step 1.3), "
                    "or launch Jupyter from the x64 Native Tools Command Prompt.")
    
        # cmd.exe outputs in the OEM codepage (cp437/cp850/etc.), not the ANSI codepage
        out = subprocess.run(f'"{vcvars}" >nul 2>&1 && set',
                             capture_output=True, text=True, encoding="oem", shell=True).stdout
        for line in out.splitlines():
            if "=" in line:
                k, _, v = line.partition("=")
                os.environ[k] = v
    
        return ("Loaded MSVC from:\n  " + vcvars) if shutil.which("cl") \
            else "Ran vcvars64.bat but cl.exe is still not found — check your MSVC install."
    
    print(load_msvc_env())
    print("cl.exe on PATH:", shutil.which("cl") is not None)
  • セットアップが正常に完了したことを確認してください:

    import importlib.util, shutil
    
    checks = {
        "setuptools": importlib.util.find_spec("setuptools") is not None,
        "wheel":      importlib.util.find_spec("wheel") is not None,
        "cl.exe":     shutil.which("cl") is not None,
    }
    for name, ok in checks.items():
        print(f"  [{'PASS' if ok else 'FAIL':>4}] {name}")
    
    if not checks["cl.exe"]:
        print("\n  cl.exe is not on PATH. rerun the cell above to load the MSVC environment.")
    elif all(checks.values()):
        print("\n  Toolchain ready. Continue to the smoke test.")

ステップ 4 - スモークテスト:C 拡張モジュールをビルドする

次のコードを実行してください。 _smoke_pkg/ソースファイルを に書き出し、Qiskit C API に基づいて C 拡張機能をビルドし、その結果をインポートします。 「SMOKE TEST PASSED」と表示されれば、ツールチェーンの準備は完了です。

このパッケージは、 「 Python でC言語を使用してQiskitを拡張する」 の手順に従っており、 Qiskit C APIリファレンスに記載されている関数を使用しています。

  • import sys, subprocess, pathlib, importlib
    
    root = pathlib.Path("_smoke_pkg")
    pkg = root / "src" / "qgss_smoke"
    pkg.mkdir(parents=True, exist_ok=True)
    
    (root / "pyworkspace.toml").write_text("""
    [build-system]
    requires = ["setuptools", "qiskit>=2.4.2"]
    build-backend = "setuptools.build_meta"
    
    [workspace]
    name = "qgss_smoke"
    version = "0.0.1"
    dependencies = ["qiskit>=2.4.2"]
    
    [tool.setuptools]
    package-dir = {"" = "src"}
    """.lstrip())
    
    (root / "setup.py").write_text("""
    import qiskit
    from setuptools import setup, Extension
    
    core_ext = Extension(
        name="qgss_smoke._core",
        sources=["src/qgss_smoke/_coremodule.c"],
        include_dirs=[qiskit.capi.get_include()],
    )
    setup(ext_modules=[core_ext])
    """.lstrip())
    
    (pkg / "__init__.py").write_text("from . import _core\nbuild_demo = _core.build_demo\n")
    
    (pkg / "_coremodule.c").write_text("""
    #define QISKIT_PYTHON_EXTENSION
    #include <Python.h>
    #include <qiskit.h>
    #include <stdint.h>
    
    static PyObject *build_demo(PyObject *self, PyObject *args) {
        QkCircuit *qc = qk_circuit_new(2, 0);
        uint32_t q0[1] = {0};
        qk_circuit_gate(qc, QkGate_H, q0, NULL);
        uint32_t q1[1] = {1};
        qk_circuit_gate(qc, QkGate_X, q1, NULL);
        return qk_circuit_to_python_full(qc);
    }
    
    static PyMethodDef core_methods[] = {
        {"build_demo", build_demo, METH_NOARGS, "Build a 2-qubit demo circuit in C."},
        {NULL, NULL, 0, NULL},
    };
    static struct PyModuleDef core_module = {
        .m_base = PyModuleDef_HEAD_INIT,
        .m_name = "_core",
        .m_methods = core_methods,
    };
    PyMODINIT_FUNC PyInit__core(void) {
        if (qk_import() < 0) {
            return NULL;
        }
        return PyModuleDef_Init(&core_module);
    }
    """.lstrip())
    
    # On Windows, an imported .pyd is file-locked by the OS. Drop the module from
    # sys.modules BEFORE pip install --force-reinstall, otherwise pip fails with
    # WinError 32 ("file in use") trying to overwrite the locked .pyd.
    if "qgss_smoke._core" in sys.modules:
        del sys.modules["qgss_smoke._core"]
    if "qgss_smoke" in sys.modules:
        del sys.modules["qgss_smoke"]
    
    r = subprocess.run(
        [sys.executable, "-m", "pip", "install", "--no-build-isolation",
         "--force-reinstall", "--quiet", str(root.resolve())],
        capture_output=True, text=True,
    )
    if r.returncode != 0:
        output = (r.stderr + r.stdout).strip()
        print("BUILD FAILED:\n")
        print(output)
        if "WinError 32" in output or "being used by another process" in output:
            print("\n--- TIP ---")
            print("The .pyd file is locked because it was previously imported in this kernel.")
            print("Restart the kernel (Ctrl+Shift+P → 'Jupyter: Restart Kernel'), then rerun")
            print("the Step 3 MSVC cell first, then this cell again.")
        elif "cl.exe" in output.lower() or "vcvars" in output.lower() or "cannot find" in output.lower():
            print("\n--- TIP ---")
            print("The compiler was not found. rerun the Step 3 cell to load the MSVC environment.")
    else:
        importlib.invalidate_caches()
        import qgss_smoke
        from qiskit import QuantumCircuit
    
        qc = qgss_smoke.build_demo()
        ops = dict(qc.count_ops())
        ok = isinstance(qc, QuantumCircuit) and ops.get("h") == 1 and ops.get("x") == 1
    
        print("Returned object is a QuantumCircuit:", isinstance(qc, QuantumCircuit))
        print("Gates built in C:", ops)
        print("\nSMOKE TEST PASSED — your Windows toolchain can build Qiskit C extensions."
              if ok else "\nSomething is off — check the gates above.")

ステップ 5 — VS Code の設定(任意)

使いやすさを考慮して、以下の手順に従ってCファイル用の IntelliSense を設定し、「 Python 」インタプリタを自動選択するように設定することができます。

  • VS Codeのターミナルで、次のコードを実行してください:

    mkdir $WORKSPACE\.vscode -Force
  • 次のコードを実行して、ワークスペースに Create .vscode/settings.json を作成してください:

    {
        "python.defaultInterpreterPath": "${workspaceFolder}/.venv/Scripts/python.exe",
        "python.terminal.activateEnvironment": true,
        "jupyter.notebookFileRoot": "${workspaceFolder}"
    }
  • .vscode/c_cpp_properties.json以下のコードは、に貼り付ける必要があるJSONを出力します:

    import qiskit.capi
    
    inc = qiskit.capi.get_include().replace("\\", "/")
    print(".vscode/c_cpp_properties.json — create this file with the content below:\n")
    print('{')
    print('    "version": 4,')
    print('    "configurations": [')
    print('        {')
    print('            "name": "Win32",')
    print(f'            "includePath": ["{inc}"],')
    print('            "defines": ["QISKIT_PYTHON_EXTENSION"],')
    print('            "compilerPath": "cl.exe",')
    print('            "cStandard": "c11",')
    print('            "intelliSenseMode": "windows-msvc-x64"')
    print('        }')
    print('    ]')
    print('}')
  • VS Code で、以下の内容を含むファイルを作成 .vscode/extensions.json してください:

    {
        "recommendations": ["ms-python.python", "ms-toolsai.jupyter", "ms-vscode.cpptools"]
    }

スタンドアロンライブラリをビルドする

このセクションでは、スタンドアロンの C ライブラリをビルドします。これは、 「UNIX 系」 のセクションで説明されているように、純粋な C プログラムをコンパイルおよびリンクしたい場合にのみ必要となります。 ステップ 1 の前提条件に加え、この作業には以下のツールが必要です:

  • Rustコンパイラ: 例えば Qiskitをソースからインストールするガイドを参照してください
  • cargo install cbindgencbindgen: Cヘッダーを作成するためのツールで、. を使ってインストールできます。 コマンドラインからのツール実行が有効になっている必要があります。そのためには、variablePATH 更新して cargo のパスを含める必要がある場合があります。
  • Python のインストール環境であり、およびの両 python3.lib 方にアクセスできるもの python3.dll
  • Qiskit リポジトリのクローン (git clone https://github.com/Qiskit/qiskit.git)
  • まず、QiskitのルートディレクトリにあるVS Code( PowerShell )のターミナルで、以下のコマンドを実行してダイナミックライブラリを qiskit_cext コンパイルします

    $env:PATH = "\path\to\pythonlib;" + $env:PATH
    cargo rustc --release --crate-type cdylib -p qiskit-cext

    これにより、 .dll ダイナミック・ライブラリと関連する .dll.lib ファイルが target/release に生成される。 次に

    cbindgen --crate qiskit-cext --output dist\c\include\qiskit.h

    dist\c\includeこれにより、MSVC互換のヘッダーが.に書き込まれます。

    これで、Cプログラムをコンパイルできるようになりました cl 。 コンパイラが qiskit ライブラリを確実に検出できるようにするには、 変数 PATH に を含めて target\release ください。

    $env:PATH = "\path\to\target\release;" + $env:PATH
    cl example.c qiskit_cext.dll.lib -I\path\to\dist\c\include

    python3.dll実行する前に、. のパスを指定してください。

    $env:PATH = "\path\to\python3-dll;" + $env:PATH
    .\example.exe

    と表示されるはずである

    num_qubits: 100
    num_terms: 1
    observable: SparseObservable { num_qubits: 100, 
    coeffs: [Complex { re: 2.0, im: 0.0 }], 
    bit_terms: [X, Y, Z], 
    indices: [0, 1, 2], 
    boundaries: [0, 3] }
    

トラブルシューティング

  • Microsoft Store から App Installer を更新するか、該当する手動ダウンロードリンクをご利用ください

  • MSVCロードセル(ステップ3)を再実行するか、 x64 のネイティブツールコマンドプロンプトを使用してください

  • 「設定」→「アプリ」→「アプリの詳細設定」→「アプリ実行エイリアス」の順に進み、オフにします python.exe

  • 実行 Set-ExecutionPolicy -Scope CurrentUser RemoteSigned してから、再試行してください

  • 実行 python -c "import qiskit.capi; print(qiskit.capi.get_include())" して、パスが存在することを確認してください

  • 実行 pip install "qiskit[visualization]~=2.4.2"

  • pip install qiskit-aer --only-binary=:all: を実行します。 それでもうまくいかない場合は、 Python 3.12 を使用するか、オプションである aer をスキップしてください

  • ビルドしたQiskit C拡張機能と、インストール済みのQiskitのバージョンは、同じでなければなりません。 次のコマンドでQiskitを再インストールします。 pip install "qiskit~=2.4.2"

  • C拡張機能は、実行中に再インポートすることはできません。 カーネルを再起動し、MSVCのコマンド(手順3)を再度実行してから、再ビルドを行ってください

  • Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

  • C:\workspaceC:\ 上の短いルートパス(例:、またはセットアップ手順で設定したパス)を使用するか、「長いパス」を有効にしてください:[設定] → [システム] → [開発者向け] → [長いパス]

  • CONDA_PREFIX が環境から両方ともなくなるまで CONDA_DEFAULT_ENV 実行 conda deactivate する。 $env:CONDA_PREFIX…にご確認ください。 それでも問題が解決しない場合は、新しい PowerShell (Anacondaプロンプトではないもの)を開き、手順2からやり直してください。

  • この仮想環境はcondaのCランタイムを継承しており、その場で修正することはできません。 それを削除し、 Python のウェブサイトから Python ( 3.12 )をダウンロードして、再構築してください。 $PYTHON_EXE``Remove-Item -Recurse -Force .venv実行した後、ステップ1の Python 検出スニペットを再度実行して設定を行い、その後、仮想環境を再作成してください(ステップ2)。

  • Conda が仮想環境に漏れ出している可能性があります。 この直上の2つの問題について、すぐに確認してください。 また、 Python が64ビット版であることを確認してください: python -c "import platform; print(platform.architecture())"

  • ユーザー名またはワークスペースのパスに、ASCII以外の文字が含まれています。 C:\workspaceワークスペースを、ASCII文字のみで構成された短いパス(例:)に移動してください

  • ワークスペースフォルダは、 OneDrive によって同期されます。 次のようなローカルパスに移動してください。 C:\workspace

  • ワークスペース内のフォルダを _smoke_pkg 削除し、MSVCのロードセルを再実行してから、スモークテストセルを再実行してください

  • お使いのネットワークでは、 HTTPS を傍受するプロキシが使用されています。 次のコマンドを実行 pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org qiskit するか、ネットワーク管理者にプロキシCA証明書について問い合わせてください

  • 「Windows セキュリティ」→「ウイルスと脅威の防止」→「設定の管理」→「除外項目」の順に選択し、ワークスペースの .venv および _smoke_pkg フォルダーを Defender の除外項目に追加してください

  • 管理者権限が必要です。 IT部門にアクセス権限を依頼してください

  • .pyd ファイルは、実行中のカーネルによってロックされています。 カーネルを再起動し(Ctrl+Shift+P → Jupyter: Restart Kernel)、手順 3 を再度実行してから、再ビルドしてください

  • PowerShell ではなく、 cmd.exe にアクセスしている可能性があります。 C:\>``PS C:\>プロンプトを確認してください: PowerShell には が表示され、cmdには が表示されます。 スタートメニューまたはWin+Xキーから「 PowerShell 」を開きます

  • インストーラーがバックグラウンドで実行されている間、これらの --passive --wait フラグは PowerShell をブロックします。 タスクバーに「Visual Studio Installer」ウィンドウが表示されているか確認してください。 インストールには10~30分ほどかかる場合があります


次のステップ

推奨事項

Footnotes

  1. Makeをインストールしていない場合は、Qiskit Makefile ルートディレクトリ内の必要なコマンドを確認してください。あるいは、今すぐMakeをインストールしてください。まだ間に合います。

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。