会社ではpipenvを使っていてRyeは使っていないが、個人でpythonを使うときはryeを使っている。
GitHub Actionsを使いっていて、Ryeを使おうとしたら色々失敗して困ったので備忘録としてGitHub ActionsでRyeを使えるようにするためのworkflowを記録しておく。
Ryeを使ったプロジェクトのサンプル
python3.12+ryeを使って環境を構築し、pytestでテストを実行するサンプル。
name: pytest with github actions
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Python 3.12
uses: actions/setup-python@v2
with:
python-version: "3.12"
- name: Install rye
run: curl -sSf https://rye-up.com/get | RYE_INSTALL_OPTION="--yes" bash
- name: activate rye
run: |
source $HOME/.rye/env
rye sync
source .venv/bin/activate
rye run pytest tests/test_main.py
- name: Setup tmate session for debugging
if: failure()
uses: mxschmitt/action-tmate@v3
以下の所はGitHub Actionsが失敗したときに、構築途中のコンテナの中にsshで入ることができるようにするためのもの。 GitHub Actionsのデバッグが終わったら消してしまっても良いと思う。
- name: Setup tmate session for debugging
if: failure()
uses: mxschmitt/action-tmate@v3
最初失敗した理由
公式サイトの手順をよく読みましょう、よく見ずに実行した結果失敗した。
最近ryeはpip install ryeで入る様になったと思っていたので、pip installしたらryeのインストール時にPyYAMLが依存パッケージとして読み込まれるがPyYAMLの5.x.xはpython3.12だとうまく動かない?ようで失敗していた。
PyYAML6.0ならpython3.12で問題ないようだったがryeが6.0.0には未対応でこちらもだめだった。
公式サイト(https://rye-up.com/guide/installation/#installing-rye)のインストールマニュアルを見るとpypiからインストールできると書いていない…。
pypiにあるryeは一体誰が提供してるものなのか謎…。
調べてみたが開発者本人ではないように見えるのでちょっとよくわからない。
パッケージ管理に使われるRye(https://rye-up.com/)と全く関係のない別プロジェクトみたいだ。