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.