poetry, rye 대신 uv를 사용하자

rye 개발진이 넘어가래요

created at: 2024-09-02


그동안 rye를 잘 써왔는데..

이전 글에서 poetry 대신 rye를 사용하자고 얘기했다. 그때 rye가 내부적으로 uv를 사용하여 빠른 속도를 제공한다고 소개했다.

그런데 astralrye를 관리하고 난 뒤로, uvrye를 잡아먹었다.

기존 관리자, astral, 그리고 rye 사용자 커뮤니티의 의견을 취합한 결과 나온 것으로, 기존 rye 사용자가 자연스럽게 uv로 넘어갈 수 있는 환경을 만드는 것이 목표라고 한다.

NOTE

이와 관련하여 rye 사용자의 의견을 계속하여 묻고 있으니 관심있으면 확인해보자.

rye를 쓰면서 굉장히 편했기에 굳이 넘어가야 싶기도 했지만, 어차피 지는 해, 결국에는 넘어가야 하니까 기존 프로젝트를 모두 uv로 변경했다. 하면서 느낀거지만, 대부분의 명령어나 설정값이 ryeuv가 호환되므로, pyproject.tomltool.ryetool.uv로 변경하면 대부분 그대로 사용할 수 있을 것이다.

하지만 일부 항목은 그렇지 않았는데, 특히 tool.rye.script, 변경하면서 아직 uv가 대체하지 못한 일부 명령어에 대한 얘기와, 이에 대한 해결 방법을 공유하고자 한다.

자체 해결 가능한 문제

build

기존에 rye build로 간단하게 해결됐던 명령어가 다소 복잡해졌다.

uvx --from build pyproject-build --installer uv

복잡해보이지만 결국 하는 일은 python -m build ...이다.

IMPORTANT

uv>=0.4.5부터 다음과 같이 build 명령어를 사용할 수 있다.

uv build

publish

기존에 rye publish로 간단하게 해결됐던 명령어가 다소 복잡해졌다.

uvx twine upload dist/* --username __token__ --password <pypi token>

복잡해보이지만 결국 하는 일은 python -m twine upload ...이다.

tool.rye.virtual

tool.uv.package 값을 false로 지정하면 된다.

requirements-dev.lock

원래 불가능했지만, uv export 기능이 추가되면서 해결됐다.

외부 라이브러리로 해결 가능한 문제

tool.rye.script

poethepoet을 사용하여 해결할 수 있다. poetry와 통합하여 사용할 수 있는 라이브러리인데, poetry가 아니어도 독립적으로 사용가능하며, rye에서 정의하는 script에서 약간만 수정하면 된다.

해결 불가능한 문제

version

기능 요청은 됐지만 아직 결정된 것이 없다.

외부라이브러리를 확인해봤지만, rye version처럼 직관적이고 명확한 사용법을 제공하지는 않는다.

예상은 했지만 이렇게 빠를줄은

장기적으로 uv와 통합된 것이라는 것은 이미 알고 있었다. 하지만 그래도 1년은 지난 다음 진행될 것이라 생각했는데, 벌써 준비 작업이 끝난 것은 예상 밖이었다.

그래도 생각보다 부족한 기능이 별로 없다. CI/CD 과정을 생각하면 오히려 더 편해진 점도 있다.

pip에서 poetry, rye를 거쳐 uv까지 왔다. 이제는 좀 정착할 수 있기를.