네, 당연히 가능합니다! 기존 프로젝트에서 requirements.txt를 사용 중이었다면, uv는 이를 아주 스마트하게 흡수하여 pyproject.toml 기반의 현대적인 프로젝트로 전환해 줍니다.
상황에 따라 두 가지 방법으로 사용할 수 있습니다.
1. requirements.txt의 내용을 프로젝트 의존성으로 추가하기
기존의 파일 내용을 읽어서 pyproject.toml의 [project.dependencies] 항목에 한꺼번에 등록하고 싶을 때 사용합니다.
1 | # requirements.txt에 적힌 모든 패키지를 현재 프로젝트에 추가 |
- 작동 방식:
uv가 파일을 읽어 패키지 목록을 파악한 뒤, 최적의 버전을 계산하여pyproject.toml에 기록하고 가상환경에 설치합니다.
2. requirements.txt 파일을 그대로 사용하여 패키지만 설치하기
프로젝트 구조를 바꾸지 않고, 단순히 가상환경에 패키지만 빠르게 깔고 싶을 때 사용합니다. (기존 pip install -r의 초고속 버전이라고 보시면 됩니다.)
1 | # 가상환경에 패키지만 설치 (pyproject.toml 기록 안 함) |
- 작동 방식:
pyproject.toml은 건드리지 않고, 지정된 가상환경에 패키지만 즉시 설치합니다.
3. uv와 기존 pip의 관리 방식 차이
| 특징 | requirements.txt (기존) |
uv / pyproject.toml (현대적) |
|---|---|---|
| 파일 성격 | 단순 패키지 나열 리스트 | 프로젝트 설정 및 메타데이터 포함 |
| 의존성 해결 | 설치 순서에 따라 충돌 가능성 있음 | 모든 패키지 관계를 계산하여 최적화 |
| 잠금 파일 | 보통 없음 (필요 시 pip freeze) |
uv.lock 파일이 모든 버전 고정 |
💡 유용한 팁: 반대로 내보내기
uv를 사용 중인데, 아직 uv를 쓰지 않는 서버나 동료를 위해 다시 requirements.txt를 만들어야 한다면 아래 명령어를 사용하세요.
1 | # 현재 프로젝트의 lock 파일을 기반으로 requirements.txt 생성 |
결론적으로:
기존 프로젝트를 uv로 마이그레이션하고 싶다면 uv add -r requirements.txt를 적극 추천합니다. 이렇게 하면 이후부터는 requirements.txt 관리의 고통에서 벗어나 pyproject.toml 하나로 모든 것을 관리할 수 있게 됩니다!
혹시 requirements.txt에 특정 버전이 복잡하게 꼬여 있나요? uv는 그 충돌을 찾는 속도도 굉장히 빠르니 바로 시도해 보세요.
tool
1 | ~$ uv tool install open-webui |
Remove unused cache entries:
bash
uv cache prune
코드를 사용할 때는 주의가 필요합니다.
Clear the entire cache directory:
bash
uv cache clean
코드를 사용할 때는 주의가 필요합니다.
rm -rf “$(uv tool dir)”
powershellRemove-Item -Recurse -Force (uv tool dir)