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:
- https://docs.astral.sh/uv/
- https://github.com/astral-sh/ruff
- https://codemaker2016.medium.com/introducing-uv-next-gen-python-package-manager-b78ad39c95d7
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)"
No VSCode acionar as teclas CTRL+P e copiar o conteúdo a seguir
ext install charliermarsh.ruff
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:
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
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
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.
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
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:
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
Estou a disposição
Catalunha