Skip to main content

Dominando os ambientes virtuais do Python: um guia completo sobre venv, Docker e como proteger seu código

Escrito por
blog feature snyk container custom base recommendations

10 de janeiro de 2024

0 minutos de leitura

O Python é uma linguagem de programação versátil e amplamente usada, com um vasto ecossistema de módulos e pacotes. Ao explorar esse ecossistema, é importante entender o papel dos ambientes virtuais. Neste artigo, vamos explicar o que são ambientes virtuais, por que os desenvolvedores precisam deles e algumas ferramentas comuns para criar ambientes virtuais do Python.

O que são ambientes virtuais?

Um ambiente virtual é uma estrutura de diretórios independente que contém uma instalação do Python em uma versão específica, além de vários pacotes adicionais. Os ambientes virtuais ajudam a separar as dependências usadas por diferentes projetos, criando espaços isolados para eles. Assim, cada projeto pode ter suas próprias dependências, independentemente das dependências dos outros projetos.

Veja um exemplo de como criar um ambiente virtual usando o módulo venv, incluído no Python:

$ python3 -m venv /path/to/new/virtual/environment

No comando acima, /path/to/new/virtual/environment pode ser substituído pelo destino que você preferir. Esse comando cria um diretório, caso ele ainda não exista, e configura um novo ambiente virtual no local especificado.

Por que os desenvolvedores precisam de ambientes virtuais

Ao trabalhar em vários projetos Python, cada um pode exigir versões diferentes do Python e de seus pacotes. Instalar tudo globalmente pode causar conflitos de versão e outros problemas. É aí que entram os ambientes virtuais.

Os ambientes virtuais permitem que os desenvolvedores trabalhem em vários projetos Python sem se preocupar com dependências entre eles. Eles oferecem um espaço isolado para instalar o Python e outros pacotes, garantindo que cada projeto tenha seu próprio conjunto de dependências, sem interferir nos demais.

Além disso, os ambientes virtuais ajudam a garantir que seus projetos possam ser reproduzidos. Isso é muito importante ao trabalhar em equipe e compartilhar seu código com outras pessoas.

Diferentes ferramentas para criar ambientes virtuais do Python

Há várias ferramentas disponíveis para criar ambientes virtuais do Python. Veja alguns exemplos:

venv: é uma biblioteca padrão do Python 3.3 ou posterior. Ela cria e gerencia ambientes virtuais.
No comando acima, /path/to/new/virtual/environment pode ser substituído pelo destino que você preferir. Esse comando cria um diretório, caso ele ainda não exista, e configura um novo ambiente virtual no local especificado.

$ python3 -m venv myenv

virtualenv: é uma ferramenta bastante popular que cria ambientes Python isolados. É mais antiga que venv e oferece mais recursos.

$ pip install virtualenv
$ virtualenv myenv

pipenv: é uma ferramenta que busca reunir o melhor dos ecossistemas de empacotamento no Python. Ela combina Pipfile, pip e virtualenv em um único comando.

$ pip install pipenv
$ pipenv --three

Em resumo, os ambientes virtuais são essenciais para o desenvolvimento em Python. Seja você uma pessoa desenvolvedora experiente em Python ou esteja começando agora, entender e usar ambientes virtuais vai aprimorar bastante seu processo de desenvolvimento.

Como usar o venv para criar ambientes virtuais do Python

Agora, vamos explorar como usar o venv, um módulo integrado ao Python, para criar ambientes virtuais. O uso de ambientes virtuais no Python é uma boa prática para isolar dependências específicas de cada projeto e manter um ecossistema de desenvolvimento organizado. Por isso, o venv é uma ferramenta essencial para desenvolvedores e especialistas em DevOps que trabalham com aplicações Python.

Como criar um ambiente virtual usando o venv

Criar um ambiente virtual usando o venv é simples. No terminal, acesse o diretório do seu projeto e execute o comando a seguir:

python3 -m venv myenv

Esse comando criará um novo diretório chamado myenv no diretório atual. Ele conterá o ambiente virtual, incluindo o interpretador Python, a biblioteca padrão e vários arquivos de suporte.

Como ativar e usar o ambiente virtual

Depois de criar o ambiente virtual, você precisará ativá-lo. A ativação ajusta seu PATH para que o comando python use a versão do ambiente virtual, e não o interpretador Python global.

Você pode ativar o ambiente virtual com o seguinte comando:

source myenv/bin/activate

Quando o ambiente for ativado, o prompt do terminal mudará para indicar qual ambiente está ativo. O terminal deverá ficar parecido com isto:

(myenv) $

Agora você pode instalar pacotes nesse ambiente sem afetar a configuração global do Python.

Como instalar o Python 3 no ambiente virtual

Como o módulo venv acompanha o Python 3.3 e versões posteriores, o Python 3 é instalado automaticamente no ambiente virtual quando você o cria. No entanto, é possível especificar outra versão do Python ao criar o ambiente. Por exemplo, para criar um ambiente com o Python 3.7, use o seguinte comando:

python3.7 -m venv myenv

Como verificar a instalação

Para confirmar que o Python 3 está instalado no ambiente virtual, você pode executar o seguinte comando:

python --version

Esse comando deve retornar a versão do Python instalada no seu ambiente.

Lembre-se: usar o venv para criar e gerenciar ambientes virtuais é uma habilidade essencial no desenvolvimento em Python. Essa é uma forma eficaz de gerenciar as dependências dos projetos e garantir sua consistência e confiabilidade.

Bônus: como configurar um ambiente local de desenvolvimento Python em um contêiner Docker

Usar contêineres Docker é uma boa maneira de criar artefatos reproduzíveis e evitar problemas de versão com o sistema operacional nativo. Veja como configurar um ambiente local de desenvolvimento Python usando Docker. Vamos explicar o que é Docker, por que ele é útil no desenvolvimento Python, como criar um Dockerfile, como compilar e executar uma aplicação Python em um contêiner Docker e, por fim, como proteger suas aplicações Python no Docker com o Snyk.

O que é Docker?

Docker é uma plataforma de código aberto que automatiza a implantação, o dimensionamento e o gerenciamento de aplicações. Ela encapsula o software em unidades padronizadas chamadas contêineres, que incluem tudo de que ele precisa para funcionar — como bibliotecas, ferramentas do sistema, código e ambiente de execução. Com o Docker, você garante ambientes consistentes do desenvolvimento à produção.

Por que usar Docker no desenvolvimento Python?

O Docker oferece várias vantagens para o desenvolvimento Python:

  • Consistência: os contêineres Docker garantem que sua aplicação seja executada exatamente da mesma forma, independentemente de onde for implantada.

  • Isolamento: o Docker isola as dependências de diferentes projetos. Isso facilita o gerenciamento dessas dependências e evita conflitos entre projetos.

  • Reprodutibilidade: os contêineres Docker são reproduzíveis, ou seja, você pode compartilhar facilmente o mesmo ambiente com outras pessoas.

Como criar um Dockerfile para uma aplicação Python

Um Dockerfile é um script que reúne comandos e instruções para criar uma imagem Docker. Veja um exemplo básico de Dockerfile para uma aplicação Python:

FROM python:3.8

WORKDIR /app

COPY requirements.txt .

RUN pip install -r requirements.txt

COPY . .

CMD ["python", "./your-python-script.py"]

Neste Dockerfile, começamos com uma imagem do Python 3.8. Em seguida, copiamos o arquivo requirements.txt para a imagem Docker e instalamos as dependências do Python. Depois, copiamos o restante do código para a imagem Docker e especificamos o comando para executar a aplicação.

Como compilar e executar uma aplicação Python em um contêiner Docker

Depois de criar um Dockerfile, você pode compilar sua imagem Docker usando o comando docker build:

docker build -t your-python-app .

Esse comando compila uma imagem Docker a partir do seu Dockerfile e a identifica com o nome your-python-app.

Para executar a aplicação em um contêiner Docker, você pode usar o comando docker run:

docker run -p 8000:8000 your-python-app

Esse comando executa sua aplicação em um contêiner Docker e mapeia a porta 8000 do contêiner para a porta 8000 da sua máquina.

Como proteger suas aplicações Python no Docker com o Snyk

O Snyk ajuda a encontrar e corrigir vulnerabilidades de segurança nas suas imagens Docker. Ele se integra ao seu pipeline de CI/CD para garantir que suas imagens Docker estejam seguras antes da implantação.

Para usar o Snyk, primeiro você precisa instalá-lo:

npm install -g snyk

Em seguida, você pode verificar se sua imagem Docker tem vulnerabilidades:

snyk test --docker your-python-app:latest --file=Dockerfile

Esse comando verifica se há vulnerabilidades na sua imagem Docker e no Dockerfile. Se encontrar alguma, o Snyk apresenta informações detalhadas e recomendações para corrigi-la.

Recomendo muito nosso artigo detalhado sobre boas práticas para conteinerizar aplicações Python com Docker, o uso do Snyk Advisor para encontrar pacotes Python no PyPI confiáveis, seguros e bem mantidos e o uso do Snyk para proteger suas aplicações Python.

E agora?

Para concluir, quero compartilhar diversos recursos para você se aprofundar e explorar o Python e a configuração de ambientes virtuais.

Documentação do Pyenv

O Pyenv é uma ferramenta simples, poderosa e multiplataforma para gerenciar várias versões do Python. A documentação do Pyenv apresenta como instalar, usar e gerenciar versões do Python com o Pyenv.

Link: Documentação do Pyenv

Documentação do Venv

O Venv é uma ferramenta incluída no Python 3.3 e versões posteriores para criar ambientes Python isolados. A documentação do Venv explica como criar, usar e gerenciar ambientes virtuais do Python.

Link: Documentação do Venv

Documentação do Docker

O Docker é uma plataforma que permite aos desenvolvedores criar, compartilhar e executar aplicações em contêineres. A documentação do Docker explica como instalar, usar e gerenciar contêineres Docker.

Link: Documentação do Docker

Outros recursos úteis

Abaixo, você encontra links para outros recursos úteis, com guias mais detalhados e práticos sobre como instalar o Python e gerenciar ambientes virtuais.

Seja você desenvolvedor ou profissional de DevOps, estes recursos vão ajudar na sua jornada de desenvolvimento de software.

Encontre e corrija vulnerabilidades em Python

Proteja seus aplicativos com a análise de vulnerabilidades da Snyk e recomendações de correção. 

Não é necessário informar cartão de crédito.

Ou cadastre-se com Azure AD Docker ID Bitbucket

Ao usar a Snyk, você concorda em cumprir nossas políticas, incluindo os Termos de Serviço e a Política de Privacidade.

Leia mais

feature insights context
Blog

Os ataques autônomos já chegaram. A defesa precisa acompanhar o ritmo.

Os atacantes autônomos estão reduzindo o tempo disponível para a defesa. Saiba como a descoberta, a correção, a validação e a prevenção contínuas ajudam as equipes de segurança a acompanhar esse ritmo.

feature insights context
Blog

A prevenção é essencialmente um problema resolvido?

A prevenção em código gerado por agentes está resolvida do ponto de vista arquitetural — mas escolher controles que protejam a segurança sem desacelerar o desenvolvimento continua sendo um desafio.

Live Stream

Agentes de Remediação, Desmistificados: Por Que Corrigir é Melhor do que Encontrar

Veja como o Remediation Agent da Snyk usa inteligência de segurança, análise de explorabilidade e validação para transformar vulnerabilidades em pull requests prontos para merge.