1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PyO3依存のパッケージをGitHub Actionsでテストする

Posted at

PyO3はRustで書いたプログラムをPythonで動かせる大変優れたものです。しかしGitHub Actionsでテストしようとしたら少し詰まったのでメモ。

pyproject.toml

maturinでビルドするので、こんな感じで始まっているはずです。

[build-system]
requires = ["maturin>=0.14,<0.15"]
build-backend = "maturin"

その下の方に、テスト用のoptional dependenciesを加えておきます。


[project.optional-dependencies]
testing = [
    "pytest",
    # その他諸々 ...
    "maturin",  # <----- ここにも加える
]

これで pip install .[testing] をしたときにここに書かれたパッケージもインストールされます。

test.yml

テスト用のCIはこんな感じになります。

jobs:
  test:
    name: ${{ matrix.platform }} (${{ matrix.python-version }})
    runs-on: ${{ matrix.platform }}
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.10", "3.11", "3.12"]
        platform: [ubuntu-latest, macos-latest, windows-latest]

    steps:
      - name: Cancel Previous Runs
        uses: styfle/cancel-workflow-action@0.11.0
        with:
          access_token: ${{ github.token }}

      - uses: actions/checkout@v3
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}

      - name: Create virtual environment
        env:
          BIN: ${{ matrix.os == 'windows-latest' && 'Scripts' || 'bin' }}
        run: |
          python -m venv .venv
          echo "$GITHUB_WORKSPACE/.venv/$BIN" >> $GITHUB_PATH

      - name: Install dependencies
        run: python -m pip install .[testing]

      - name: Build
        run: maturin develop --release

      - name: Test
        with:
          run: python -m pytest

ここで重要なのが、

  • maturinでビルドするときに仮想環境が必須なので、"Create virtual environment"でvenvを適切な場所に作ること。
  • "Install dependencies"で先ほど用意した"testing"を指定してインストールすること。
  • "Build" でmaturinによるビルドを行うこと。

これで走るはずです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?