Rye로 파이썬 프로젝트 세팅해보기!
어떤 언어로 프로젝트를 하다보면 언어 버전부터 시작해서 Dendency와 Package 관리는 뭐로 할 것인지? 가상환경은 어떤 것으로 관리할 것인지? 나중에 어떻게 패캐지를 배포할 것인지? 등을 고민해야 합니다.
파이썬도 마찬가지로 여러 도구들이 돌아다닙니다.
주로 사용한 도구
주로 저는 간단하게 제일 아무런 설치가 필요없는 pip와 venv로 프로젝트를 관리를 합니다. 그런데 이번에 팀원들과 FastAPI로 프로젝트를 하면서 운영체제별로 하위 버전에 대한 이슈가 몇 번 생겨서 pip freeze를 저장한 requirements.txt에 한계를 느꼈습니다.
말고도 venv에서 환경을 불러오는 방식과 요즘 많이 채택하여 쓰는 pyproject.toml로 관리하고 싶은 마음도 들어서 다른 것을 찾아보았습니다.
그러던 중 peotry랑 uv(패키지 설치용)를 써볼까 Rye를 발견했습니다.
새로운 환경에서 파이썬 환경을 구축해야 했는데 파이썬 설치도 가능해서 장점으로 느껴졌습니다.
Rye
Rye는 파이썬에서 이런 도구들을 공부할 필요없이 번거롭지 않고 일관된 경험을 주기 위한 프로젝트라고 합니다.
ruff, build, twine, uv 등 목적별로 자주 쓰이는 여러 프로젝트를 신경 쓰지 않고 사용할 수 있도록 하는데 아직 실험적으로 개발 중인 단계입니다. 어떻게 발전할지 기대됩니다.
이번 글에서는 복잡한 것 신경 쓸 필요 없이 Rye로 간단하게 프로젝트를 시작해보겠습니다. (Mac 기준 설명입니다.)
1. Rye 설치
https://rye.astral.sh/guide/installation/#installing-rye
위의 링크에 들어가서 설치 스크립트를 실행합니다. (윈도우는 설치 프로그램을 실행하면 된다고 합니다.)
설치과정에서 원하는 package installer, 시스템 파이썬을 쓸지 rye의 파이썬을 쓸지, 설치할 파이썬 버전, 환경 변수 설정 등에 대한 프롬프트가 뜹니다.
저는 속도가 빠르다고 칭찬을 많이 받고 있는 uv, rye로 cpython12를 선택했습니다.
2. 환경 변수 및 자동 완성 설정
저는 zsh을 써서 .zprofile에 안내한 내용을 추가했습니다.
자동 완성도 지원돼서 설정했습니다.
https://rye.astral.sh/guide/installation/#shell-completion
oh-my-zsh를 쓰기는 하는데 최근에 shell이 느려져서 갈아탈 생각을 하고 있기 때문에 수동으로 불러왔습니다. (참고 글: https://postgresqlstan.github.io/zsh/zsh-functions-2/)
저는 다음과 같이 ~/.zfunc 디렉터리 내의 함수들을 불러오도록 되어 있습니다.
# autoload로 plugin 불러오기
typeset -U fpath # fpath에서 중복 제거
fpath=(~/.zfunc $fpath)' # fpath에 추가 .func 추가
autoload -U ${fpath[1]}/*(:t)' # .zfunc 안의 플러그인들 autoload
# compinit # plugin 불러오기
그래서 아래 명령어만 실행했습니다.
rye self completion -s zsh > ~/.zfunc/_rye
설치 결과
python만을 rye에서 설치한 것으로 alias함을 확인할 수 있습니다.
alias 출력 결과
3. Rye 프로젝트 초기화
rye init으로 프로젝트를 초기화하고 시작할 수 있습니다. 그러면 다음과 프로젝트를 세팅해줍니다.
4. 가상환경 생성
여기에서 rye sync를 처음 실행하면 가상환경 설정을 해줍니다.
.venv가 새로 생겼습니다.
패키지를 불러올 수 있으면 가상환경 설정까지 성공입니다.
5. Rye로 모든 것을 관리하기
이제부터는 rye로 모든 것을 관리하면 됩니다.
패키지를 추가하고 싶으면 rye add하면 toml파일을 업데이트해줍니다.
실제로 가상환경에 설치하려면 rye sync를 해야 합니다. 그러면 설치하며 lock파일을 업데이트해줍니다.
toml은 원래 파이썬 표준 사용방법과 동일해서 시작 스크립트나 스크립트 명령어도 추가도 원래 쓰던대로 할 수 있습니다.
rye fmt, rye lint로 포맷과 린트도 가능합니다.
rye 프로젝트 안에 rye 프로젝트를 만들어서 workspace도 설정할 수 있습니다.
이 모든 내용은 https://www.youtube.com/watch?v=q99TYA7LnuA&t=1s 에서 개발자가 설명해주니 참고해보세요!
간단 후기
설치한 패키지는 가상환경을 활성화하지 않고도 `rye run 패키지명`으로 실행할 수 있어서 편하면서도 묘합니다.
node에서의 경험과 되게 비슷해서 바로 적응할 수 있었습니다. 상세한 것은 프로젝트에 써보고 후기 남기도록 하겠습니다.
댓글
이 글 공유하기
다른 글
-
[파이썬] Thread를 사용하기 전에 알아야 할 몇 가지 주의점들
[파이썬] Thread를 사용하기 전에 알아야 할 몇 가지 주의점들
2020.05.23 -
[파이썬] 리스트 변형 :: 리스트를 원하는 형태로 바꾸기, 리스트 형변환
[파이썬] 리스트 변형 :: 리스트를 원하는 형태로 바꾸기, 리스트 형변환
2019.08.15 -
[파이썬] 리스트 필터링 :: 리스트에서 원하는 요소만 추출하기
[파이썬] 리스트 필터링 :: 리스트에서 원하는 요소만 추출하기
2019.08.10