---
title: "Ambientes virtuais para projetos Python"
author: "[Walmes Marques Zeviani](http://leg.ufpr.br/~walmes)"
output:
  html_document:
    theme: yeti
    highlight: haddock
    fig_caption: yes
    fig_align: center
    toc: true
    toc_dep: 3
    number_sections: true
---


# Ambientes virtuais

Os ambientes virtuais permitem isolar instalações do Python e usá-las
sem que haja conflito. Ou seja, você pode ter um projeto com Python que
depende de pacotes para web scraping e outro que apenas usa pacotes de
visualização de dados. Em cada um dos ambientes você instala os pacotes
necessários para seu funcionamento.

Agora suponha que ambos os projetos, apesar de terem distintos
propósitos, usem a Numpy mas precisam dela em diferentes versões para
haver compatibilidade com outros pacotes. Pode ser que cada projeto vá
ao final ser colocado em produção em servidores diferentes. Os ambientes
são uma forma de você ter o ambiente de desenvolvimento igual ao
ambiente de produção onde o código será executado. Com o ambiente
virtual você terá, em sua máquina de desenvolvimento, a versão da Numpy
exigida em cada projeto sem que haja conflito entre as versões pois,
como já dito, os ambientes virtuais são formas de isolar a instalação e
execução do Python.


# Criar e usar um ambiente

Para fazer uso de ambientes virtuais, primeiro precisa-se instalar o
[`virtualenv`]. Execute então no terminal as instruções a seguir.

```{sh, eval = FALSE}
# Instala o `virtualenv`.
anaconda3/bin/pip install virtualenv
```

Para criar um ambiente virtual só executar o comando `virtualenv`
seguido do caminho para o seu ambiente virtual. Opções customizam a
forma de construção do ambiente. Consulte a documentação para
detalhes. Abaixo a instrução cria o ambiente `MYENV`.

```{sh, eval = FALSE}
# Modelo de instrução para criar um ambiente virtual.
anaconda3/bin/virtualenv [opções] <nome_do_diretório>

# Exemplo para criar um ambiente chamado `MYENV`.
anaconda3/bin/virtualenv MYENV
```

O ambiente `MYENV` está no diretório `/home/walmes/MYENV`. Lá existe uma
cópia do Python do Python da Anaconda que é executada com
`/home/walmes/MYENV/bin/python`. O `pip` também foi incluído, então
pode-se instalar pacotes nesse ambiente usando o comando
`/home/walmes/MYENV/bin/pip install <pacote>`.

Os pacotes instalados tem conteúdo ocupando o diretório
`~/MYENV/lib/python<version>/site-packages/`. Essa instalação de pacotes
Python é isolada daquela que o originou e de outras dentro do sistema
operacional.

Essa documentação mostra outra forma de usar ambientes virtuais dentro
do Anaconda:
<https://uoa-eresearch.github.io/eresearch-cookbook/recipe/2014/11/20/conda/>.


# Ativação do ambiente

Ativar o ambiente virtual faz com que o seu ambiente sejá a raíz
enquanto o ambiente estiver ativado. Para ativar e desativar o ambiente
virtual, execute as instruções a seguir.

```{sh, eval = FALSE}
# Ativa o ambiente virtual.
source /home/walmes/MYENV/activate

# Desativa um ambiente virtual que está ativado.
deactivate
```

Caso você esteja com o projeto concluído, não queira manter ou queira
apagar o ambiente, basta eliminar o diretório que o contém.

```{sh, eval = FALSE}
# Elimina o ambiente virtual.
rm -r ~/MYENV
```

<!------------------------------------------- -->
[`virtualenv`]: https://virtualenv.pypa.io/
