Python 의 C API 인터페이스
qiskit.capi
이 모듈은 Qiskit의 공개 C API를 통해 Python -공간 상호작용을 제공합니다.
C API 자체에 대한 설명은 Qiskit C API를 참조하십시오.
빌드 시스템과의 연동
Python 패키지에는 모든 Qiskit C API 헤더 파일과, 모든 C-API qiskit 함수를 포함하는 컴파일된 공유 라이브러리가 포함되어 있습니다. 이 두 객체의 위치는 각각 get_lib() 함수와 get_include() 함수를 사용하여 확인할 수 있습니다.
자신이 무엇을 하고 있는지 확실히 알고 있는 경우가 아니라면, 일반적으로 의 출력 결과에 직접 get_lib()연결해서는 안 됩니다. 특히, 이 객체에 직접 링크하는 것은 Qiskit의 C API를 사용하는 배포 가능한 Python 확장 모듈을 빌드하는 안전한 방법이 아닙니다.
하지만 직접 링크의 모든 주의 사항을 이해하고 있다면, 이 함수를 사용하여 라이브러리의 위치를 확인할 수 있습니다.
get_include
qiskit.capi.get_include()
C qiskit.h 헤더 파일과 내부 qiskit/*.h 보조 파일이 포함된 디렉터리를 가져옵니다.
Qiskit을 빌드 종속성으로 사용할 때는 일반적으로 다음과 같이 이 디렉터리를 컴파일러의 포함 검색 경로에 추가해야 합니다
qiskit_include=$(python -c 'import qiskit.capi; print(qiskit.capi.get_include())')
gcc -I "$qiskit_include" my_bin.c -o my_bin이 디렉터리의 위치는 Qiskit 패키지 데이터 내에서 고정되어 있지 않으며, Qiskit 버전마다 달라질 수 있습니다. 디렉터리를 가져올 때는 항상 이 함수를 사용해야 합니다.
리턴
패키지 포함 파일 디렉터리의 절대 경로.
리턴 유형
get_lib
qiskit.capi.get_lib()
모든 C-API 내보낸 심볼을 포함하는 공유 객체 라이브러리의 경로를 가져옵니다.
일반적으로 이 객체에 직접 연결해서는 안 됩니다. 특히, 이 객체에 직접 링크하는 것은 Qiskit의 C API를 사용하는 Python 확장 모듈을 빌드하는 안전한 방법이 아닙니다.
원한다면 를 ctypes 사용하여 이 객체에 포함된 C API 심볼에 접근할 수 있지만, 헤더 파일에 선언된 C API 유형은 이에 대응하는 Python 객체와 상호 교환할 수 없다는 점에 유의해야 합니다.
Qiskit 패키지 데이터 내 이 파일의 위치와 이름은 고정되어 있지 않으며, Qiskit 버전마다 달라질 수 있습니다.
리턴
C-API 내보내기 심볼이 포함된 공유 객체 라이브러리의 절대 경로.
리턴 유형
C API에 대한 네이티브 바인딩
또한, 이 모듈에는 모든 Qiskit C API 유형 및 함수에 대한 바인딩이 포함되어 ctypes 있습니다. qiskit.capi 이들은 C API에서와 동일한 이름으로 모듈 속성으로 제공됩니다. qk_circuit_new()예를 들어, qiskit.capi.qk_circuit_new 는 에 해당합니다.
qiskit.capi.LIB
유형: ctypes.PyDLL
Qiskit C API를 포함하는 라이브러리를 감싸는 ctypes 래퍼입니다.
이 내용은 완전성을 기하기 위해 제공된 것이지만, 모든 함수, 구조체 및 열거형은 모듈 qiskit.capi 객체에서 직접 액세스할 수 있습니다.
Struct
C API에서 사용되는 콘크리트 struct 타입은 complete _fields_ 속성을 가진 해당 ctypes.Structure 타입으로 선언됩니다. 이것들은 직접 인스턴스화하여 확인할 수 있습니다.
불투명 포인터는 속성이 설정되지 않은 _fields_ 유형으로 ctypes.Structure 표현되며, 인스턴스화할 수 없습니다. 일반적으로 함수에서 반환될 때는 타입 래퍼로 ctypes.POINTER 감싸진 형태로 반환됩니다.
열거
C API에 열거형이 있는 경우, 이 모듈은 해당 열거형의 값이 대응하는 ctypes 기본 정수형인 Pythonenum.Enum 를 선언합니다. EnumPython -space Enum 유형의 객체는 여전히 Python 객체를 감싸고 있으므로 ctypes , 열거형을 반환하는 함수는.에 포함된 값이 아닌 원시 숫자 값을 반환합니다. Python -space Enum 객체들은 호출을 생성할 때 편의를 위해 선언되었습니다.
함수
Qiskit C API의 모든 공개 라이브러리 함수는 완전한 타입을 가지며, C에서와 동일한 이름으로 모듈 루트에 재수출됩니다. LIB원하신다면 에서 해당 기능에 접근할 수도 있습니다.
qk_import()와 같은 헤더 전용 함수는 C API 라이브러리 객체의 일부가 아니므로 내보내지지 않는다는 점에 유의하십시오.