Installer l'API C de Qiskit
Ce guide explique comment installer et utiliser l'API C de Qiskit. Une fois l'installation terminée, consultez la section « Étendre l' Python s à l'aide de l'API C de Qiskit ».
L'exemple suivant construit un observable avec C :
// 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;
}de type UNIX
Cette section fournit des instructions de construction pour les systèmes de type UNIX.
Exigences
La compilation nécessite les outils suivants :
- Un compilateur Rust : voir par exemple le guide d'installation de Qiskit à partir des sources
- Un compilateur C : par exemple, GCC sur Linux et Clang sur MacOS. L'API C de Qiskit est compatible avec un compilateur conforme à la norme C11 standard.
cbindgen: un outil permettant de créer l'en-tête C, que vous pouvez installer à l'aide decargo install cbindgenL'exécution de l'outil depuis la ligne de commande devrait être activée, ce qui peut nécessiter d'exporter votrePATHvariable pour inclure/path/to/.cargo/bin.- Python Bibliothèque installée ( Python 3.9 +) : la bibliothèque Python est requise lors de la liaison dynamique. Notez que
Pythonn'est pas utilisé lors de l'exécution et que l'interpréteur n'est jamais initialisé; seuls certains symboles delibpythondoivent être définis. Pour plus de détails, consultez ce numéro. - (GNU) Make : cette option est facultative, mais elle est recommandée pour utiliser les processus d'installation automatisés.
Ce code vérifie que tout a été installé :
rustc --version
gcc --version
cbindgen --version
make --version # optional, but recommendedGénérer
Pour construire l'en-tête et la bibliothèque C, vous pouvez lancer la commande Make suivante1 dans la racine de Qiskit,
make cqui fournira la bibliothèque partagée compilée à dist/c/lib et l'en-tête qiskit.h avec toutes les déclarations de fonctions à toutes les déclarations de fonctions dans dist/c/include. Notez que le nom précis de la bibliothèque dépend de la plate-forme; par exemple,libqiskit.so sous UNIX et libqiskit.dylib sous MacOS.
(Notez que cette étape émet actuellement beaucoup d'avertissements, ce qui est normal et ne constitue pas une raison de s'alarmer. Les versions ultérieures supprimeront les avertissements)
Vous pouvez ensuite compiler un programme C en utilisant l'en-tête et la bibliothèque C de Qiskit :
gcc example.c -o example.o -I /path/to/dist/c/include -L /path/to/dist/c/lib -lqiskitPour s'assurer que la bibliothèque Qiskit est trouvée lors de l'établissement des liens, définissez le chemin d'accès à la bibliothèque d'exécution comme suit include /path/to/dist/c/lib. Si la bibliothèque Python n'est pas disponible par défaut lors de la liaison dynamique, elle doit également être ajoutée. Ces commandes dépendent de la plate-forme. Sous 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_PATHSous MacOS :
export DYLD_LIBRARY_PATH=/path/to/dist/c/lib:$DYLD_LIBRARY_PATH
export DYLD_LIBRARY_PATH=/path/to/python/lib:$DYLD_LIBRARY_PATHVous pouvez également définir le chemin d'accès à la bibliothèque d'exécution lors de la compilation en ajoutant
-Wl,-rpath,/path/to/dist/c/lib
# same for Python
aux drapeaux du compilateur. En outre, la bibliothèque Python doit être disponible lors de l'établissement de liens dynamiques. Dans les environnements Linux c'est généralement la valeur par défaut.
Vous pouvez maintenant exécuter le binaire :
./example.oqui, si l'on utilise l'extrait d'exemple présenté précédemment, devrait imprimer
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] }
Fenêtres
Cette section fournit des instructions de construction pour les systèmes Windows.
Il existe deux méthodes distinctes pour utiliser l'API C sous Windows :
- Développer des modules d'extension pour l' Python qui utilisent l'API C de Qiskit. Suivez les étapes 1 à 5. Cette méthode utilise les en-têtes C fournis avec le paquet
qiskitPython et ne nécessite ni Rust ni cbindgen. - Compilez la bibliothèque C autonome afin de pouvoir la lier à un programme entièrement écrit en C, comme indiqué dans la section « Système de type UNIX ». Suivez l'étape 1, puis passez directement à la section « Compiler la bibliothèque autonome », qui répertorie les prérequis supplémentaires.
Exigences
- Certaines étapes nécessitent des droits d'administrateur.
- 5 à 8 Go d'espace disque disponible.
- Un compilateur C : Microsoft Visual C++ (MSVC), installé à l'étape 1.
- Une installation 64 bits d' Python ( 3.10 ou version ultérieure), installée à l'étape 1.
Avant de commencer
Créez votre espace de travail. Il doit s'agir d'un chemin d'accès court sur un disque local. N'utilisez pas de dossiers d' OneDrive-synced s (tels que « Documents » ou « Bureau »), de lecteurs réseau, ni de chemins d'accès contenant des espaces ou des caractères non ASCII. Si votre nom d'utilisateur contient des caractères autres que ceux de l'anglais, ne le placez pas dans votre dossier utilisateur.
Exemples de chemins d'accès valides à l'espace de travail : C:\workspace, D:\workspace, C:\Users\john\workspace
Etape 1. Installation des prérequis
Il s'agit d'un fichier volumineux (2 à 5 Go, 10 à 30 minutes). Installez-le d'abord pour savoir immédiatement si votre ordinateur est compatible.
NoteNécessite des droits d'administrateur.
Option A —
wingetOuvrez un terminal « PowerShell » et exécutez la commande suivante :winget install Microsoft.VisualStudio.2022.BuildTools --override "--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --passive --wait"Le terminal semble bloqué pendant l'exécution du programme d'installation. C'est tout à fait normal; cela prendra entre 10 et 30 minutes. Vérifiez si une fenêtre intitulée « Visual Studio Installer » s'affiche dans votre barre des tâches.
Si
wingetl'application n'est pas reconnue, mettez à jour App Installer depuis le Microsoft Store ou utilisez l'option B.Option B — téléchargement manuel Ouvrez le site Web des outils de compilation Visual Studio pour C++ et cliquez sur « Télécharger les outils de compilation ». Lancez le fichier exécutable pour démarrer l'installation.
Lorsque la fenêtre « Installation de Visual Studio » s'ouvre, dans l'onglet « Charges de travail », sélectionnez « Développement sur ordinateur de bureau avec C++ ». Pour plus d'informations, consultez la page « Installer la prise en charge de C et C++ dans Visual Studio ».
Téléchargez VS Code depuis le site Visual Studio Code, ou exécutez
winget install Microsoft.VisualStudio.Code. Lancez le fichier exécutable téléchargé pour installer VS Code.Une fois l'installation terminée, procédez comme suit :
- Ouvrir VS Code
- Cliquez sur Fichier → Ouvrir un dossier, puis sélectionnez votre espace de travail (par exemple,
C:\workspace). - Cliquez sur « Terminal » → « Nouveau terminal » pour ouvrir un terminal « PowerShell ».
- Cliquez sur l'icône « Extensions » située à gauche ou appuyez sur Ctrl+Maj+X. Dans la fenêtre « Extensions », recherchez puis installez
ms-python.python,ms-toolsai.jupyter, etms-vscode.cpptools.
Exécutez les autres commandes de ce guide dans le terminal de VS Code, sauf indication contraire. Le terminal de VS Code s'ouvre par défaut sur PowerShell, afin d'éviter toute confusion avec la fenêtre de commande intégrée à Windows.
Définissez la variable d'espace de travail. Par exemple, si votre espace de travail s'appelle
workspace, exécutez la commande suivante :$WORKSPACE = "C:\workspace" # change to your workspace path mkdir $WORKSPACE -Force cd $WORKSPACEPython 3.12 est recommandé car il offre la meilleure disponibilité des roues pour
qiskit-aeret d'autres dépendances. 3.10 Le site 3.11 fonctionne également, mais la version 3.13 ou une version ultérieure pourrait ne pas disposer de « wheels » précompilés pour certains paquets.Ouvrez le terminal de VS Code et exécutez le code suivant pour détecter une version compatible d' 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'" }Si le téléchargement n'a pas fonctionné, ou si vous préférez effectuer un téléchargement manuel, mettez en commentaire les lignes de code qui installent Python 3.12, puis téléchargez Python 3.12 depuis le site Python. Lancez le fichier exécutable pour installer « Python ». Sélectionnez « Ajouter Python au PATH » lors de l'installation, puis réexécutez l'extrait de code ci-dessus pour vous assurer qu'il est bien détecté.
Remarques-
N'utilisez PAS la version disponible sur le Microsoft Store Python, car elle ne contient pas les en-têtes C. Si
pythoncela ouvre le Microsoft Store, désactivez l'alias en accédant à Paramètres Windows → Applications → Paramètres avancés des applications → Alias d'exécution des applications. -
Utilisateurs d'Anaconda : exécutez la commande
conda deactivatejusqu'à ce que le préfixe (base) disparaisse. Si le problème persiste, ouvrez un nouveau terminal dans VS Code.
-
Nécessaire uniquement si vous clonez des dépôts de Lab. Exécutez
winget install Git.Git.
Étape 2 - Configurer l'environnement virtuel « Python » avec Qiskit
Ouvrez le terminal de VS Code et réinitialisez-le :
$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'" }Autorisez l'exécution du script (une fois par utilisateur), puis créez l'environnement virtuel :
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned cd $WORKSPACE & $PYTHON_EXE -m venv .venv --prompt workspace .\.venv\Scripts\Activate.ps1Si, lors de l'activation, un message d'erreur rouge indiquant « scripts désactivés » s'affiche, cela signifie que la
Set-ExecutionPolicyligne n'a pas été exécutée. Lancez-le manuellement, puis réessayez.(workspace)Votre invite devrait désormais s'afficher.Vérifier :
Get-Command python | Select-Object -First 1 -ExpandProperty Source # → workspace\.venv\Scripts\python.exepython -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évite de compilerqiskit-aerà partir du code source. Siqiskit-aercela ne fonctionne toujours pas, essayezpip install qiskit-aer --only-binary=:all:ou passez cette étape.qiskit-aerest facultatif et n'est nécessaire que pour la simulation locale.NoteNe PAS l'exécuter
pip install --upgrade qiskitaprès l'installation. Le passage à une nouvelle version mineure rend incompatibles les extensions C développées pour l'ancienne version.
Étape 3 - Charger l'environnement MSVC
Exécutez le code suivant à chaque nouvelle session d' Python (par exemple, à chaque redémarrage d'un noyau Jupyter). Il détecte et charge automatiquement l'environnement de développement MSVC, ce qui vous évite d'avoir à utiliser l' x64, l'interface de ligne de commande intégrée.
L'exemple présenté dans cette documentation permet de compiler des modules d'extension C à l'aide setuptools de MSVC. QISKIT_PYTHON_EXTENSIONEn règle générale, on définit, on inclut qiskit.het on appelle qk_import() dans sa fonction d'initialisation. Seuls les fichiers d'en-tête de qiskit.capi.get_include() sont nécessaires lors de la compilation — aucune bibliothèque n'est liée. Pour plus de détails, consultez la section « Étendre Qiskit dans Python avec C ».
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)Vérifiez que la configuration a bien fonctionné :
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.")
Étape 4 - Test de fonctionnement : créer une extension C
Exécutez le code suivant. Il écrit les fichiers source dans _smoke_pkg/, génère une extension C basée sur l'API C de Qiskit, puis importe le résultat. Si le message « SMOKE TEST PASSED » s'affiche, votre chaîne d'outils est prête.
Ce module suit la procédure décrite dans la section « Étendre Qiskit dans Python avec C » et utilise les fonctions de la référence de l'API C de Qiskit.
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.")
Étape 5 — Configurer VS Code (facultatif)
Pour plus de simplicité, vous pouvez suivre cette procédure afin de configurer IntelliSense pour les fichiers C et de sélectionner automatiquement l'interpréteur Python.
Dans le terminal de VS Code, exécutez le code suivant :
mkdir $WORKSPACE\.vscode -ForceCréez
.vscode/settings.jsondans votre espace de travail en exécutant ce code :{ "python.defaultInterpreterPath": "${workspaceFolder}/.venv/Scripts/python.exe", "python.terminal.activateEnvironment": true, "jupyter.notebookFileRoot": "${workspaceFolder}" }Le code suivant affiche le JSON que vous devez coller dans
.vscode/c_cpp_properties.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('}')Dans VS Code, créez
.vscode/extensions.jsonun fichier avec le contenu suivant :{ "recommendations": ["ms-python.python", "ms-toolsai.jupyter", "ms-vscode.cpptools"] }
Compiler la bibliothèque autonome
Cette section permet de compiler la bibliothèque C autonome, qui n'est nécessaire que si vous souhaitez compiler et lier des programmes entièrement en C, comme décrit dans la section « Systèmes de type UNIX ». Outre les prérequis de l'étape 1, cela nécessite les outils suivants :
- Un compilateur Rust : voir par exemple le guide d'installation de Qiskit à partir des sources
cbindgen: un outil permettant de créer l'en-tête C, que vous pouvez installer à l'aide decargo install cbindgen. L'exécution de l'outil depuis la ligne de commande devrait être activée, ce qui peut nécessiter de mettre à jour votrePATHvariable pour y inclure le chemin d'accès à Cargo.- Une installation d' Python s permettant d'accéder à la fois à
python3.libet àpython3.dll - Un clone du dépôt Qiskit (
git clone https://github.com/Qiskit/qiskit.git)
Commencez par compiler la
qiskit_cextbibliothèque dynamique en exécutant la commande suivante dans le terminal de VS Code ( PowerShell ) à la racine du répertoire Qiskit :$env:PATH = "\path\to\pythonlib;" + $env:PATH cargo rustc --release --crate-type cdylib -p qiskit-cextCette opération génère la bibliothèque dynamique
.dllet le fichier.dll.libassocié danstarget/release. Ensuite, générez l'en-tête aveccbindgen --crate qiskit-cext --output dist\c\include\qiskit.hCela permet d'écrire l'en-tête compatible MSVC dans
dist\c\include.Vous pouvez désormais utiliser
clpour compiler le programme en C. Pour que le compilateur puisse trouver la bibliothèque qiskit, ajoutez-latarget\releaseà laPATHvariable.$env:PATH = "\path\to\target\release;" + $env:PATH cl example.c qiskit_cext.dll.lib -I\path\to\dist\c\includeAvant de lancer le programme, indiquez le chemin d'accès à votre fichier
python3.dll.$env:PATH = "\path\to\python3-dll;" + $env:PATH .\example.exedevrait alors imprimer
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] }
Traitement des incidents
Mettez à jour l 'App Installer depuis le Microsoft Store, ou utilisez les liens de téléchargement manuel correspondants
Relancez la cellule de charge MSVC (étape 3) ou utilisez l'invite de commande des outils natifs d' x64
Accédez à Paramètres → Applications → Paramètres avancés des applications → Alias d'exécution des applications, puis désactivez cette option.
python.exeExécuter
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned, puis réessayerExécutez
python -c "import qiskit.capi; print(qiskit.capi.get_include())"le programme et vérifiez que le chemin d'accès existeExécuter
pip install "qiskit[visualization]~=2.4.2"Exécutez
pip install qiskit-aer --only-binary=:all:. Si cela ne fonctionne pas non plus, utilisez Python 3.12 ou ignorez « aer », qui est facultatifLa version de l'extension C de Qiskit compilée et celle de Qiskit installée doivent correspondre. Réinstallez Qiskit à l'aide de
pip install "qiskit~=2.4.2"Une extension C ne peut pas être réimportée en temps réel. Redémarrez le noyau, relancez les commandes MSVC (étape 3), puis recompilez
Set-ExecutionPolicy -Scope CurrentUser RemoteSignedUtilisez un chemin d'accès racine court sur C:\ (par exemple,
C:\workspace, ou le chemin que vous avez défini lors de la configuration), ou activez l'option « Chemins longs » : Paramètres → Système → Pour les développeurs → Chemins longsContinuez
conda deactivatejusqu’à ce queCONDA_DEFAULT_ENVetCONDA_PREFIXaient tous deux disparu de l’environnement. Renseignez-vous auprès de$env:CONDA_PREFIX. Si le problème persiste, ouvrez une nouvelle fenêtre d' PowerShell s (et non une fenêtre d's Anaconda) et recommencez à partir de l'étape 2.L'environnement virtuel a hérité du runtime C de conda et ne peut pas être fixé en place. Supprimez-le, téléchargez le fichier « Python » ( 3.12 ) depuis le site Python, puis recompilez.
$PYTHON_EXE``Remove-Item -Recurse -Force .venvExécutez, puis réexécutez l'extrait de code de détection d' Python s de l'étape 1 pour définir les paramètres, puis recréez l'environnement virtuel (étape 2).Il semblerait que Conda provoque des fuites dans l'environnement virtuel. Vérifiez les deux points mentionnés juste au-dessus. Vérifiez également que le fichier « Python » est en 64 bits :
python -c "import platform; print(platform.architecture())"Votre nom d'utilisateur ou le chemin d'accès à votre espace de travail contient des caractères non ASCII. Déplacez l'espace de travail vers un chemin d'accès court composé uniquement de caractères ASCII (par exemple,
C:\workspace)Le dossier « Espace de travail » est synchronisé par OneDrive. Déplacez-le vers un chemin d'accès local, par exemple
C:\workspaceSupprimez le
_smoke_pkgdossier de votre espace de travail, relancez la cellule de charge MSVC, puis relancez la cellule de test de fuméeVotre réseau utilise un proxy qui intercepte les requêtes HTTPS. Essayez d'exécuter cette commande
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org qiskitou demandez le certificat CA du proxy à votre administrateur réseauAjoutez les dossiers et
_smoke_pkgde.venvvotre espace de travail aux exclusions de Defender en accédant à Sécurité Windows → Protection contre les virus et les menaces → Gérer les paramètres → ExclusionsUn accès administrateur est requis. Demandez à votre service informatique de vous donner accès
Le fichier.pyd est verrouillé par le noyau en cours d'exécution. Redémarrez le noyau (Ctrl+Maj+P → Jupyter : Redémarrer le noyau), réexécutez l'étape 3, puis recompilez
Il se peut que vous soyez sur cmd.exe au lieu de PowerShell. Vérifiez votre ligne de commande : « PowerShell » affiche
PS C:\>, « cmd » afficheC:\>. Ouvrez « PowerShell » depuis le menu Démarrer ou à l'aide de la combinaison de touches Win+XLes
--passive --waitoptions bloquent PowerShell pendant que le programme d'installation s'exécute en arrière-plan. Vérifiez si une fenêtre intitulée « Visual Studio Installer » s'affiche dans votre barre des tâches. L'installation peut prendre entre 10 et 30 minutes
Etapes suivantes
- Découvrez comment étendre l' Python s à l'aide de l'API C de Qiskit.
- Installez Qiskit.
- Découvrez la documentation de référence de l'API C de Qiskit.
Footnotes
-
Si vous n'avez pas installé Make, vérifiez dans
Makefilele répertoire racine de Qiskit les commandes requises, ou installez simplement Make; il n'est pas trop tard. ↩