Skip to content

Instantly share code, notes, and snippets.

@catalunha
Last active May 12, 2025 13:02
Show Gist options
  • Save catalunha/d5e0270d51e6d430671295afd7ce8d1a to your computer and use it in GitHub Desktop.
Save catalunha/d5e0270d51e6d430671295afd7ce8d1a to your computer and use it in GitHub Desktop.
Migrande do Poetry para UV

poetry para uv

Tutorial para converter o gerenciamento de dependencias, etc feito pelo poetry para uv

Porque usar uv ?

  • Substitui pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv, and more.
  • 10-100x mais rápido que pip
  • Dos mesmos criadores do Ruff
  • Feito em Rust
  • etc

Configurações iniciais em meu ambiente: PopOS 22.04

Saiba mais:

Instalar uv

Acessando o terminal, aplicar ~$:

curl -LsSf https://astral.sh/uv/install.sh | sh

Configrações básicas de .bashrc

. "$HOME/.local/bin/env"
eval "$(uv generate-shell-completion bash)"
eval "$(uvx --generate-shell-completion bash)"

Extensão do VSCode

No VSCode acionar as teclas CTRL+P e copiar o conteúdo a seguir

ext install charliermarsh.ruff

Migrando do poetry para uv

Acessando a pasta do projeto e aplicar:

uvx migrate-to-uv

Ele vai converter o formato do pyproject.toml para estrutura do uv

É necessário revisar o arquivo pyproject.toml veja mais no item a seguir: Configurando pyproject

Em locais onde é chamado o poetry, substituir para uv

Saiba mais:

Configurando pyproject

Pode ser necessário acrescentar algumas configurações no pyproject.toml, seguem minhas sugestões

[tool.ruff]
# Exclude a variety of commonly ignored directories.
exclude = [
    ".git",
    ".git-rewrite",
    ".hg",
    ".pyenv",
    ".pytest_cache",
    ".pytype",
    ".ruff_cache",
    ".venv",
    ".vscode",
    "__pypackages__",
    "node_modules",
    "site-packages",
    "venv",
]
line-length = 120
indent-width = 4

[tool.ruff.lint]
extend-select = ["E501","N","R","I","E","W","F"]
ignore = ["RET504"]
extend-fixable = ["I001"]

[tool.ruff.lint.extend-per-file-ignores]
"__init__.py" = ["F401"]

Remover do pyproject.toml

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

Apagar pasta .venv a solicitar recriar com

uv sync

Usando uv

Para adicionar pacotes em dependencies

uv add django

Para adicionar pacotes em dev dependencies

uv add --dev ruff

Instalar python

uv python install 3.12

Criando ambiente virtual

uv venv --python 3.12

Ativando ambiente virtual

source .venv/bin/activate

pre-commit

Adicionar o pre-commit a dev dependencies

uv add --dev pre-commit

Criar arquivo .pre-commit-config.yaml com

repos:
  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.11.0
    hooks:
      # Run the linter..
      - id: ruff
      # Run the formatter.
      - id: ruff-format

Instalar no git com

pre-commit install

Sobre rev: vx.x.x veja mais em https://docs.astral.sh/ruff/installation/

Esta configuração só afeta arquivos atualizados.

ruff check e format

Se necessario você pode aplicar

uvx ruff check

E atualizar um a um da lista de pendencias.

Logo em seguida atualizar os demais com

uvx ruff format

Dockefile

Escolha aqui (https://docs.astral.sh/uv/guides/integration/docker/#available-images) uma imagem com o uv pré instalado

# Your other commands
RUN pip install uv==0.6.6
# Your other commands

Saiba mais:

Makefile

Utilize um makefile para evitar confundir comandos entre uv e poetry.

Crie um arquivo com este nome Makefile sem extensão e coloque este conteúdo nele. Acrescente o que julgar necessário

migrate:
	@uv run python manage.py migrate

makemigrations:
	@uv run python manage.py makemigrations

collecstatic:
	@uv run python manage.py collectstatic --no-input

shell:
	@uv run python manage.py shell

Dúvidas

Estou a disposição

Catalunha

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment