Rust 코드를 Python 배포로
Rust 크레이트를 작성하는 것과 Python에서 설치할 수 있는 패키지로 만드는 것은 서로 다른 작업이다. Maturin은 PyO3와 CFFI, UniFFI 바인딩을 사용하는 크레이트나 Rust 바이너리를 Python 패키지로 구성한다. Python 소스와 Rust 코드를 함께 둔 프로젝트도 다룰 수 있다.
빌드와 개발 설치 구분
빌드 명령은 wheel을 만들어 출력 디렉터리에 저장하지만 그 자체로 업로드하지는 않는다. 개발 명령은 현재 가상 환경에 모듈을 빌드해 설치하는 흐름이다. 개발 설치와 완성된 배포 파일을 통한 설치는 지원하는 동작 범위가 같지 않을 수 있으므로 실제 배포 산출물도 확인해야 한다.
두 생태계의 메타데이터
Cargo.toml과 pyproject.toml의 정보를 함께 활용하고 겹치는 메타데이터에는 pyproject.toml의 값을 우선한다. Python 의존성과 명령행 진입점도 정의할 수 있다. 배포 패키지 이름과 Python에서 가져오는 모듈 이름이 서로 다른 설정에서 결정될 수 있다는 점도 구분해서 살펴봐야 한다.
관련 문서
Meson-python / Scikit-build-core / Python Build / Twine / Cibuildwheel