Executando verificação de segurança...
6

Criando Ambientes Virtuais com Venv

Desenvolvedores de Software precisam constantemente aprender novas tecnologias e fazer novos projetos. Quanto mais se faz isso e mais tempo passa, maiores são as chances de um conflito de bibliotecas ou erros de uma nova versão de código acontecer.

No ecossistema Python isso é resolvido com a abordagem dos ambientes virtuais. No primeiro artigo que escrevi sobre o assunto em https://dev.to/nobrelucas/administrando-ambientes-virtuais-com-conda-54l9 falei mais profundamente sobre esse assunto e introduzi o administrador de ambientes virtuais Conda.

Nesse artigo, busco introduzir um criador de ambientes virtuais muito mais simples que serve para a maioria dos projetos de pequeno e médio porte, o Venv.

Note que diferente do Conda, ele não oferece nenhum suporte para a administração dos ambientes virtuais, somente para a sua criação.

Instalação

Primeira vantagem do Venv: ele já vem instalado com o Python, então nada mais é preciso ser feito para usar ele 🙂.

Criando ambiente virtual

Para criar um ambiente virtual com Venv basta usar um comando muito simples:

python3 -m venv {nome_do_env}

Vamos explorar esse comando por partes:

→ python3 invoca o interpretador Python que será responsável por executar o código do módulo venv

→ -m indica que o código que vai ser executado pelo interpretador Python será um módulo

→ venv é o módulo venv, responsável pela criação do ambiente virtual

→ {nome_do_env}, como auto explicativo, nomeia o diretório onde o ambiente virtual vai ser criado

E assim temos nosso ambiente virtual. Vamos fazer algo prático

Na prática

Vamos criar um ambiente chamado “teste” em um diretório de estudo “criando-venv”

python3 -m venv teste

Se você estiver em um ambiente Linux, digite ls no terminal para ver o diretório com o ambiente criado.

venv-teste.png

Para ativar o ambiente, basta usar o comando:

source teste/bin/activate

venv-activate.png

Para sair do ambiente basta escrever o comando deactivate no terminal ou fechar o terminal:

Instalando bibliotecas

Note que as bibliotecas instaladas são somente as básicas para começar a instalar outras, ou seja o seu ambiente está limpo e livre, pronto para começar a ser configurado com novas bibliotecas.

venv-pip-empty.png

Então agora é só instalar as bibliotecas que você precisa para o seu projeto.

Digamos que vamos fazer uma API com Flask e instalamos ele com pip:

pip install Flask

Após a instalação, nosso ambiente terá as seguintes bibliotecas:

venv-pip-flask.png

Agora é só programar

Persistindo o ambiente

Para que você possa trabalhar colaborativamente com outros desenvolvedores. Eles vão precisar criar um ambiente virtual e instalar as exatas mesmas bibliotecas que você, na exata mesma versão.

Ao invés de você mandar um print como o que eu mostrei anteriormente para instalar manualmente cada biblioteca, uma de cada vez, você pode criar um arquivo de requerimentos, o requirements.txt. Para isso, basta usar o comando:

pip freeze > requirements.txt

Isso vai criar um arquivo txt com todas as bibliotecas que você está usando no projeto. Lembre de sempre atualizar seu requirements.txt com as novas bibliotecas que você instalar no caminho.

Instalando as bibliotecas do requirements.txt

Caso você seja o outro desenvolvedor que recebeu o requirements.txt. Para instalar essas bibliotecas basta você primeiro criar um ambiente virtual na sua máquina, ativar ele e depois usar o comando:

pip install -r requirements.txt

E você já está pronto para trabalhar também

Conclusão

Com esse artigo você já é capaz de usar o Venv para criar ambientes virtuais para projetos de pequeno e médio porte.

Se você quiser saber mais sobre ambientes virtuais, meu primeiro artigo sobre o assunto tem mais detalhes sobre eles.

Dúvidas, sugestões, correções e críticas são muito bem vindas na sessão de comentários abaixo. Espero poder encontrar você nos meus próximos artigos 😀. Até a próxima!

Carregando publicação patrocinada...
2

Parabéns pelo post, brother!

Uma dúvida honesta: suponha um projeto (1) armazenado em um repositório Git, (2) acessível e usado por outros colaboradores e (3) que tenha um ambiente virtual configurado; seria possível os devs (a) clonarem o repo, (b) ativarem a venv, (c) trabalharem na máquina local e (d) depois commitarem, sem que tenham problemas quanto às bibliotecas, não? Digo isso porque a venv é um aglomerado de arquivos, e como as mudanças são rastreadas ali pelo Git...

2

Opa, obrigado pela dúvida. Acho ela muito importante.

Creio que eu não tenha sido tão claro quanto eu queria na sessão "persistindo o ambiente". A resposta deveria estar lá.

Seguindo o fluxo de trabalho:

-> Você (dev a). Criou o ambiente, instalou as bibliotecas, desenvolvou a primeira feature e atualizou o requirements.txt para enfim commitar suas alterações.
-> O requirements.txt precisa estar no repositório Git também. Assim ele pode ser commitado e "pushado" para o repositório remoto.

-> O dev b vai fazer o clone do projeto com o requirements.txt incluso
-> Ele cria o env local, realiza a instalação das bibliotecas com pip install -r requirements.txt e pode começar a trabalhar.
-> Se ele instalar novas bibliotecas no caminho, é dever dele atualizar o requirements.txt com pip freeze > requirements.txt e commitar o arquivo de requerimentos junto com as demais alterações no código.

Note que isso envolve um grau de responsabilidade para ambos os desenvolvedores, que devem sempre estar atualizando o arquivo de requerimentos.

Quando o número de contribuintes aumenta, aumenta também os pontos de falha para essa metodologia.

Por isso que usar somente o venv para projetos de grande porte já não é mais recomendado.

Eu espero escrever futuramente um artigo sobre o poetry, que é um gerenciador tanto de pacotes quanto de dependências do Python que busca resolver muitos problemas que o pip + ambientes virtuais não conseguem. Ainda estou estudando ele para me sentir confiante em escrever sobre haha.

Espero ter tirado sua dúvida! 😁

2
1

Realmente tem uns passos aí que parecem mais confusos.

Muitas pessoas tem críticas em relação ao Ubuntu devido ao apt e seus problemas, como esse. Nunca tive isso com Fedora, que é o que eu uso principalmente, mas acho o Ubuntu excelente para quem tá começando com Linux.

Obrigado por ter lido o tutorial :D

2

Obrigado pela atenção, Lucas!

A dúvida era genuína, e vi que já estava fazendo errado: pensei que, uma vez feito o clone pelo dev-b, bastaria ele ativar o ambiente e fim da história.

Novamente: parabéns pelo post! :)

1

Não há de que :)

Eu imagino que com o Poetry seja mais ou menos por esse caminho de só ativar o ambiente, mas não tenho certeza. Recomendo você dar uma pesquisada.