Projeto Python: Explorando sistemas complexos
A questão do ambiente de desenvolvimento em Python
As tecnologias digitais estão em constante evolução e precisamos tentar acompanhá-las na perspectiva de solução de problemas ou de conquista de objetivos.
A ideia deste blog foi compartilhar uma jornada de atualização de conhecimento, sob o viés do Python, uma linguagem que hoje é fundamental para quem trabalha com análise de dados e inteligência artificial. Mesmo que, para prototipação, seja uma alternativa popular para se comunicar com a máquina.
Na era da informação, não se exclui também a comunicação; não me refiro às telecomunicações, mas à comunicação social, que hoje é mediada por meio das máquinas e, muitas vezes, ela representa também o interlocutor, a ponto de interromper nossos pensamentos por intrusão de correção ou sugestão do que queremos falar.
Meu olhar para a tecnologia nunca foi apenas técnico, mas também comunicacional, como uma forma multimídia de troca de informações e de entretenimento. Porém, é sabido que muitos dos fracassos em sistemas de informação não estão relacionados com o tecnológico, mas com a habilidade humana de identificar as soluções e utilizar a tecnologia como ela deve ser, como ferramenta para fazer mais e melhor.
Uma vez, alguém me disse uma analogia, que desenvolver software é tipo construir uma casa, tem que fazer a fundação, construir paredes, separar áreas etc. Porém, na época, já disse que não concordava porque, apesar de algumas semelhanças, a principal distinção é a sua natureza líquida, ou seja, nada é feito para durar muito tempo. Característica da metamorfose do hipertexto, sempre em mutação. Ou seja, uma casa, quando você constrói uma parede, do nada ela não deixa de existir, ou ainda, começa a mudar seu material e você rapidamente precisa se adaptar porque senão sua construção vai ceder.
É assim com o digital, construir um software, a menos que você tenha controle de tudo, o que hoje é muito difícil, será muito comum que a atualização de uma linguagem de programação faça parar de funcionar o sistema. E não basta dizer que não vai atualizar; caso contrário, logo vai parar de funcionar, de qualquer forma, pois o sistema não vai conseguir responder às demandas atuais. E quem trabalha na área, atualizar-se é uma constante e isso é algo que nos faz um pouco mais tolerantes ao imperfeito e acabar enxergando beleza na entropia e também como uma oportunidade de realizar algum trabalho.
Abordagem moderna do ambiente de desenvolvimento em Python
Este post vem no intuito de acompanhar a evolução do ambiente de desenvolvimento em Python, cujo até pouco tempo usávamos o pip, venv (ambiente virtual) e outra ferramentas em conjunto, mas que agora, para responder melhor em projetos de machine learning (aprendizado de máquina), existe a proposta do uv, que segundo o site oficial, é um pacote e um gerenciador de projeto, escrito em Rust com o objetivo de substituir a necessidade de gerenciar vários recursos com uma única ferramenta e mais rápida.
A instalação é simples, vou apresentar aqui o comando para uso no Linux Ubuntu.
curl -LsSf https://astral.sh/uv/install.sh | shÉ uma boa prática verificar a versão instalada;
uv --versionPara iniciar um novo ambiente de desenvolvimento:
uv init --app nome-projeto-pythonO resultado é algo assim:
nome-projeto-python/
├── .python-version
├── main.py
├── pyproject.toml
├── README.md
└── src/
Para criar o ambiente virtual:
uv syncA ativação segue o mesmo comando conhecido para o venv:
source .venv/bin/activatePara instalar pacotes, não se utiliza o pip, mas o comando add, como no exemplo abaixo:
uv add pandas rich psutilPara instalar ferramentas de desenvolvimento:
uv add --dev pytest ruff ipykernelSolução
uv substitui boa parte do fluxo tradicional com pip, venv e requirements.txt.
Em vez de usar:
python -m venv .venv
source .venv/bin/activate
pip install pandas
pip freeze > requirements.txtCom o uv fica assim:
uv add pandas
uv sync
uv run python arquivo.pyO pyproject.toml agora é o centro do projeto, nele declaramos o nome, versão, dependências e ferramentas.
Para rodar o projeto, use o comando
uv run main.pyConsiderações finais
Quando precisamos de vários passos para realizar algo em sistemas de informação, é natural que alguma ferramenta ou estratégia de se diga mais eficiente surja, pois afinal, é assim que a tecnologia evolui, respondendo a problemas que se apresentam à medida em que novos desafios surgem em diversos contextos.
Percebo que alguns projetos que usam machine learning têm adotado o uv, justamente por essa suposta facilidade, mas com ela vem a questão de não esquecer do que ela está fazendo por nós, para que não fiquemos dependentes.
Me parece que quanto mais a tecnologia digital evolui, mas importante tem se tornado o estudo sobre os princípios como matemática, lógica, engenharia de software, resolução de problemas, estratégias de comunicação, filosofia, dentre outras disciplinas.
Isso levanta uma questão que sempre me intrigou, que na verdade não existe mais somente a área de TI, mas a computação que está presente em todas as áreas e profissões. Percebo que todas as áreas de conhecimento estão tendendo a ter seu segmento neste campo.