Closed bridge-y closed 1 year ago
移行ツールを見つけた。
nahco314/poetry2rye: A simple tool to migrate your Poetry project to rye
インストール方法
rye install poetry2rye
curl -sSf https://rye-up.com/get | bash
非対話環境では RYE_INSTALL_OPTION="--yes"
をセットすればよい。
curl -sSf https://rye-up.com/get | RYE_INSTALL_OPTION="--yes" bash
パスの追加が必要。
# bashの場合
echo 'source "$HOME/.rye/env"' >> ~/.bashrc
# fish
set -Ua fish_user_paths "$HOME/.rye/shims"
poetry2rye
バックアップフォルダをプロジェクトルートの親ディレクトリに作成するため、親ディレクトリのパーミッションに注意。
root
であったため、ユーザ権限で書き込めるよう権限の変更が必要だった。ソースディレクトリ名とプロジェクトディレクトリ名が一致していない場合は以下のエラーが発生する。
Traceback (most recent call last): File "/home/vscode/.rye/shims/poetry2rye", line 8, in
sys.exit(main()) ^^^^^^ File "/home/vscode/.rye/tools/poetry2rye/lib/python3.11/site-packages/poetry2rye/main.py", line 24, in main convert(project_path) File "/home/vscode/.rye/tools/poetry2rye/lib/python3.11/site-packages/poetry2rye/convert.py", line 21, in convert poetry_project = PoetryProject(project_path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/vscode/.rye/tools/poetry2rye/lib/python3.11/site-packages/poetry2rye/project.py", line 94, in init assert self.module_path.exists(), "module not found" AssertionError: module not found
tool.poetry.scripts
は移行されない。削除される。(コミットID: 286491f6bb116fb747c308d75125cfe2f8ca5e6f 時点)
Python バージョンの指定
# Python 3.10 を使用する場合
rye pin 3.10
pyproject.toml の tool.poetry.scripts
の内容を project.scripts
に記載
ドキュメントから、project.scripts
が tool.poetry.scripts
に対応することが読み取れる。
[project.scripts] my-hello-script = 'hello:main'
ライブラリの同期
rye sync
postCreateCommand
で実行するスクリプトに記述する。RYE_INSTALL_OPTION="--yes"
で Rye をインストールする。ビルドステージは以下で動作した。
FROM debian:12.1-slim as builder
ENV RYE_INSTALL_OPTION="--yes" \
RYE_NO_AUTO_INSTALL=1 \
RYE_HOME="/opt/rye"
ENV PATH="${RYE_HOME}/shims:${PATH}"
WORKDIR /app
RUN apt update && apt install -y curl
RUN curl -sSf https://rye-up.com/get | bash
COPY . ./
RUN rye sync --no-dev --no-lock
RUN rye build
ローカルでビルドする場合、.dockerignore
に .venv
を含めておくこと。
含めておかないと、rye sync
でエラーになる。
Poetry: python-poetry/poetry: Python packaging and dependency management made easy
Rye: mitsuhiko/rye: An Experimental Package Management Solution for Python