"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > uv PartIt&#s로 Python 프로젝트 관리 마스터하기 이제 시를 버릴 시간입니다

uv PartIt&#s로 Python 프로젝트 관리 마스터하기 이제 시를 버릴 시간입니다

2024-11-04에 게시됨
검색:640

Mastering Python Project Management with uv PartIt

Python 환경과 종속성을 확인하기 위해 pip, virtualenv, conda, poem, pyenv와 같은 여러 도구를 사용하는 데 지치셨나요? 당신은 혼자가 아닙니다! Python 프로젝트를 관리하는 것은 골치 아픈 일처럼 느껴질 수 있습니다. 특히 다뤄야 하는 다양한 패키지 관리자와 도구의 경우 더욱 그렇습니다.

uv를 입력하세요 — Universal Virtualenv. Python 개발 프로세스를 간소화하고 속도를 높이도록 설계된 원스톱 상점 패키지 관리자라고 생각하세요.


작은 뒷이야기

uv는 또 다른 최신 패키징 관리자인 Rye에서 영감을 얻어 pip, pip-tools, pyenv, virtualenv 및 poem의 최고의 기능을 통합합니다. Rust를 사용하여 구축된 uv는 빠르고 효율적일 뿐 아니라 종속성 관리부터 가상 환경 생성까지 모든 것을 단순화합니다.

자외선의 목적

간단히 말하면 uv는 통합에 관한 것입니다. 하나의 통합된 경험을 가질 수 있는데 왜 여러 도구 간에 전환합니까? Python 개발에서 발생하는 마찰을 제거하여 프로젝트를 보다 일관되고 빠르게 관리할 수 있는 방법을 제공하는 것을 목표로 합니다. 그리고 그것은 또한 빠르게 타오르고 있습니다! 이는 동적 관리를 위한 새로운 문을 열어줍니다.


1. 인라인 스크립트 메타데이터가 포함된 이식 가능한 코드

의존성에 대해 이야기해보자

uv의 가장 흥미로운 기능 중 하나는 Python 스크립트 내에서 직접 종속성을 추가하는 기능입니다. 다음과 같은 간단한 스크립트가 있다고 가정해 보세요.

# app.py
import requests
from rich.pretty import pprint

response = requests.get("https://peps.python.org/api/peps.json")
data = response.json()
pprint([(k, v["title"]) for k, v in data.items()][:10])

이 스크립트를 실행한다는 것은 일반적으로 가상 환경을 설정하고 종속성을 수동으로 설치하는 것을 의미합니다. uv를 사용하면 모든 종속성을 스크립트에 직접 포함하여 자체 포함하고 공유 가능:
할 수 있습니다.

$ uv add --script app.py 'requests



자동 메타데이터 생성

이것은 스크립트 파일에 메타데이터를 추가합니다:

# /// script
# dependencies = [
#   "requests



그리고 그게 다야! 이 파일을 다른 사람과 공유할 수 있으며 다음을 실행하면 됩니다.

$ uv run app.py

그리고 짜잔 — 외부 설정이 필요하지 않습니다! 모두 uv의 속도와 효율성 덕분입니다.


2. 가상 환경 생성 및 관리

가상 환경 시작하기

기본적으로 uv는 시스템을 깨끗하게 유지하고 다른 프로젝트 간의 충돌을 피하기 위해 가상 환경 내에 패키지를 설치해야 합니다. uv로 가상 환경을 만드는 것은 간단합니다:

$ uv venv

격리된 환경을 포함하는 .venv 디렉터리가 생성됩니다. 사용자 정의 디렉터리나 Python 버전을 지정하려면 다음을 수행할 수 있습니다.

$ uv venv my_env --python 3.9

환경을 사용할 준비가 되었으며 uv는 패키지 설치 또는 스크립트 실행과 같은 모든 명령에 대해 자동으로 이를 감지합니다.

uv add와 uv pip install을 사용하는 경우

  • uv add 사용: 프로젝트의 pyproject.toml 파일에 종속성을 추가하려는 경우. 이는 프로젝트를 개발 중이고 모든 종속성을 추적하여 프로젝트를 쉽게 공유하고 재현할 수 있도록 하려는 경우에 가장 좋습니다. 이 내용은 다음 게시물에서 다룰 예정이니 계속 지켜봐 주시기 바랍니다!

    $ uv add fastapi
    

    이렇게 하면 pyproject.toml이 업데이트되고 uv.lock의 버전이 잠깁니다.

  • uv pip install 사용: 프로젝트 파일을 수정하지 않고 빠르게 사용하기 위해 또는 pyproject.toml에서 추적할 필요가 없는 전역 도구를 위해 패키지를 설치하려는 경우. uv pip를 즉각적인 일회성 설치라고 생각하세요.

    $ uv pip install requests
    

올바른 명령을 선택하면 프로젝트가 제대로 관리되고 공유 또는 배포가 쉬워집니다.


3. 재현성을 위해 버전 잠금

업데이트로 인해 코드가 깨진 적이 있나요?

우리 모두 그런 경험이 있습니다. 코드가 오늘은 작동하다가 패키지가 업데이트되어 내일 작동하지 않습니다. uv를 사용하면 일관성과 재현성을 보장하기 위해 패키지 버전을 잠가서 이를 방지할 수 있습니다.

[tool.uv]
exclude-newer = "2023-10-16T00:00:00Z"

이렇게 하면 새 버전의 종속성이 나오더라도 프로젝트가 안정적으로 유지됩니다. 놀라움을 금할 수 없는 장기 프로젝트에 적합합니다!


4. Python 버전 관리

다른 프로젝트, 다른 Python 버전? 괜찮아요!

많은 개발자는 서로 다른 Python 버전이 필요한 여러 프로젝트를 작업해야 합니다. uv를 사용하면 다음과 같이 쉽게 버전을 전환할 수 있습니다.

$ uv python install 3.8 3.9 3.10

버전이 설치되면 버전 간 전환이 원활하게 이루어집니다.

$ uv run --python 3.10 app.py

프로젝트의 특정 버전을 잠그려면:

$ uv python pin 3.9

더 이상 pyenv 명령을 저글링할 필요가 없습니다. uv가 모든 무거운 작업을 대신 처리합니다.


5. 핍박에 작별 인사를 하세요

핍이지만 더 빠르고 더 좋습니다

uv는 pip와 유사한 경험을 제공하지만 강력한 성능을 제공합니다. 패키지 설치는 간단합니다:

$ uv pip install flask

선택적 종속성을 추가하거나 GitHub 저장소에서 직접 설치해야 합니까? 땀 흘리지 마세요:

$ uv pip install 'torch>=1.10.0' "git https://github.com/astral-sh/ruff"

더 이상 느린 설치 때문에 기다릴 필요가 없습니다. uv는 작업을 빠르고 효과적으로 완료합니다.


6. CLI 도구를 전역적으로 쉽게 관리

검은색부터 러프까지, 번거로움 없이 도구를 구입하세요

코드를 린팅하거나 파일 형식을 지정하는 경우 uv를 사용하면 CLI 도구를 쉽게 설치할 수 있습니다.

  • 전 세계적으로:

    $ uv tool install ruff
    
  • 프로젝트 내에서 로컬로:

    $ uv add ruff
    
  • 전역적으로 설치하지 않고 임시 명령 실행:

    $ uvx black my_code.py
    

패키지 충돌과 환경 오염에 작별을 고하세요. 필요할 때 언제 어디서나 도구를 실행하세요.


Python 개발을 강화하고 여러 도구와의 씨름을 멈추고 싶다면 uv가 답입니다. 간소화된 명령, 재현 가능한 환경 및 효율적인 패키지 관리를 통해 uv는 Python 개발을 지루한 일이 아닌 즐거움으로 만들어줍니다.

자외선을 시험해 볼 준비가 되셨나요? ? 지금 시작하여 Python 프로젝트를 관리하는 더 나은 방법을 경험해 보세요.


2부에서 pyproject.toml 활용, 글로벌 및 로컬 도구 설치 처리, 복잡한 환경 관리 시 uv가 어떻게 가장 친한 친구가 될 수 있는지와 같은 고급 기능에 대해 자세히 알아볼 예정입니다.

즐거운 코딩하세요! ?✨

자세한 내용과 전체 문서를 보려면 uv 문서를 확인하세요.

릴리스 선언문 이 기사는 https://dev.to/thomas_bury_b1a50c1156cbf/mastering-python-project-management-with-uv-part1-its-time-to-ditch-poetry-3bi0?1에서 복제됩니다. 침해가 있는 경우, 문의 Study_golang@163 .comdelete
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3