会社では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/)と全く関係のない別プロジェクトみたいだ。