PIP NUNCA MAIS, a nova ferramenta de Python que facilita sua vida

Eu gorsto de Rust, mas não sou um dos maiores fãs de javascript, mas independente disso, você sabe como o cargo e o npm torna o gerenciamento de projetos nessas linguagens algo muito mais saudavel, e é simplesmente BIZARRO que uma das linguagens mais usadas que é o Python não tem um real gerenciador de projetos.

É ridiculo depender do dev, pra a cada nova dependencia que ele baixa pro projeto Python, um novo pip freeze > requirements.txt, por que você sabe que você já aconteceu de você adicionar uma nova dependencia mas esquecer de colocar ela no requirements.txt, coisa que ferramentas como o cargo e o npm se responsabilizam por fazer, sem contar que geram arquivos de configuração, ambiente de desenvolvimentos, criam a estrutura base do projeto e tudo que QUALQUER LINGUAGEM CIVILIZADA DEVERIA FAZER

E o proposito desse artigo é basicamente compartilhar com todos que usam Python, a existencia do uv uma ferramenta de linha de comandao pra projetos Python.

Se você faz alguma coisa em Python, eu garanto que se você baixar o uv e literalemnte só aplicar os comandos basicos da ferramenta que eu vou passar aqui, você vai soltar um

"PIP NUNCA MAIS! PROBLEMA COM A VERSÃO DO PYTHON NUNCA MAIS, ESQUECER DE ATIVAR O AMBIENTE VIRTUAL E FU*** SUA MAQUINA COM PACOTES INDESEJADOS NUNCA MAIS"

Literalmente o básico

Criar um projeto Python

Isso irá criar o projeto pra você todos os arquivos basicos necessários

uv init meu_projeto
# ou 
uv init

A estrutura é a seguinte

. ├── hello.py ├── pyproject.toml ├── .python-version └── README.md

No arquivo .python-version você pode colocar a versão desejada do python do projeto

E você roda tudo usando

uv run hello.py
# ou alguma coisa mais especifica como
uv run -- flask run -p 3000 

E quando você rodar o projeto, vai ser automaticamente criada a pasta .venv, que vai ser seu ambiente virtual, de onde vão estar suas dependencias e tudo

Mexer com dependencias é algo vital, e pra baixar elas, você usa

uv add nome_dependencia
uv add requests --git https://github.com/psf/requests

E ela vai ser automaticamente adicionada no arquivo pyproject.toml

[project]
name = "meu_projeto_uv"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11"
dependencies = []

Pra desistalar uma dependencia você usa

uv remove nome_dependencia

E automaticamente ela é removida

E se você realmente quiser, você pode chamar o pip e ferramentas do tipo diretamente com comandos como

uv pip install flask
uv pip install "<package_name> @ https://github.com/<user>/<repo>"
uv venv my_env
uv venv 3rd_env --python 3.11

Apesar de como eu mostrei, não ser necessario, visto que o o uv gerencia isso pra você

Eu garanto que se você usuario de python der uma chance, rapidamente você vai ver o valor nessa ferramente, e essa foi minha contribuição hoje

ADD Download

Pra baixar

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

uv parece interessante, eu uso normalmente o poetry que é quase o mesmo

Só faltou indicar como instala o uv:

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

Ou usando o próprio pip ou pipx install uv

Bela dica, fizemos a substituição do pip pelo uv no trabalho e tivemos ganhos significativos de perfomance no tempo de build, ficou violentamente mais rápido.

Muito obrigado pela contribuição. Já perdi quantas vezes quebrei o ambiente instalando lib nos sistema kkk.

Pô, bem daora mano, acho que eu vou tentar fazer algum projeto em python usando ele pra dar uma olhada no workflow como que fica.

Bacana demais!

Eu havia feito um curso basico de python e senti falta demais disso e também estranhei inicialmente mas não fui pesquisar por conta de ser um curso iniciante. Como temos o nvm no JS e já sou muito adepto ao uso, a curva de aprendizado será tranquila.

Obrigado pela contribuição!

perfeito, é isso aí, depois de descobrir o rye (e posteriormente migrando pro uv) eu nunca mais instalo o python com o instalador. ele já faz tudo e tudo muito rápido

Comecei a usar o Poetry recentemente, realmente ajuda muito. No meu caso, uso em conjunto com o Typer para gerenciar pacotes e scripts que fazemos.

Caraca, manoooh! Tô doido pra esperimentar, obrigado! Até criei um scriptzinho pra montar meus ambientes, pra garantir que não vou fazer besteira e instalar libs fora do venv.