() translation by (you can also view the original English article)
Nesse tutorial, aprenderemos sobre ambientes virtuais. Veremos a importância sobre seu uso em Python e como começar a usá-los.
O Que É um Ambiente Virtual?
Um ambiente virtual é uma ferramenta para separar um projeto, dependências e bibliotecas em um único lugar. Esse ambiente é específico para o projeto e não interfere as dependências de outros projetos.
Por exemplo, podemos trabalhar num projeto X que usa a versão 1.0 da biblioteca Z e também manter o projeto Y usando a versão 2.0 da mesma biblioteca Z.
Como Ambientes Virtuais Funcionam?
A ferramenta de ambiente virtual cria uma pasta dentro da pasta do projeto. Por padrão, ela é chamada de venv
, mas podemos customizá-la. Ela mantem executáveis do Python e pip lá dentro. Quando o ambiente virtual é ativado, os pacotes instalados posteriormente são instalados dentro da pasta do ambiente virtual específico daquele projeto.
Começando com VirtualEnv
Primeiro, devemos ter pip
instalado no sistema. Podemos instalá-lo usando o comando a seguir:
1 |
sudo apt-get install python-pip python-dev build-essential |
Com pip
, instalemos a ferramenta de ambiente virtual.
1 |
pip install virtualenv
|
Para começar a usar virtualenv
, precisamos iniciá-lo e ativá-lo. Comecemos criando um nova pasta de projeto, PythonApp
.
1 |
mkdir PythonApp
|
Naveguemos até a pasta PythonApp
e iniciemos o ambiente virtual digitando o comando abaixo:
1 |
virtualenv PythonAppVenv |
O comando acima configurará o ambiente virtual para o projeto PythonApp
.



Isso cria uma pasta chamada PythonAppVend
dentro da pasta PythonApp
. Ela mantem executáveis Python e pip lá dentro. Quaisquer novos pacotes instalados para o projeto após o ambiente virtual ter sido ativado são colocados lá. Eis a estrutura dela:



Para começar a usar o ambiente virtual, precisamos ativá-lo usando o comando abaixo:
1 |
source PythonAppVenv/bin/activate
|
Após atvado, devemos ver o nome PythonAppVenv
no lado esquerdo do nome do prompt de comando.



Tentemos instalar um novo pacote para o projeto PythonApp
.
1 |
pip install flask
|
O novo pacote deve ser instalado na pasta do ambiente virtual. Vejamos a pasta do ambiente virtual dentro de lib/python2.7/site-packages
e devemos ver o novo pacote flask
instalado. Podemos ver mais sobre Flask na página do projeto.



Após terminar com o ambiente virtual, podemos desativá-lo usando o comando abaixo:
1 |
deactivate |
Pacotes Mais Fáceis de Rastrear
Ao lidar com programas Python, instalamos diferentes pacotes requeridos pelo programa. Continuamos trabalhando e a lista de pacotes instalados só aumenta. Agora chegou a hora de publicar o código Python para o servidor de produção. Oops... Já não sabemos quais pacotes foram instalados para fazer o pacote funcionar.
Tudo que podemos fazer é abrir o programa Python e verificar quais pacotes importamos nele e instalá-los um a um.
Um ambiente virtual provê um método fácil de rastrear os pacotes instalados no projeto. Uma vez ativado, ele provê a facilidade de congelar o estado atual dos pacotes do ambiente.
Podemos fazer isso usando o comando abaixo:
1 |
pip freeze > requirements.txt
|
O comando acima cria um arquivo chamado requirements.txt
que detalha os pacotes com suas versões no ambiente atual. Eis como ele parece:



Esse arquivo é bem útil para a publicação do projeto em outra plataforma já que todas as dependências do projeto já estão à nossa disposição nele. Para instalar as dependências do projeto, usando tal arquivo, executemos o comando abaixo:
1 |
pip install -r requirements.txt |
virtualenwrapper
Facilitando as Coisas
A virtualenv
é um verdeiro amplificador para os desenvolvedores. Mas dá muito trabalho quando temos de lidar com mais de um ambiente virtual. Para lidar com vários ambientes virtuais, há uma extensão para o virtuaenv
, a virtualenvwrapper
.
virtualenvwrapper
é um envólucro para o virtualenv
que provê a funcionalidade de lidar com vários ambientes virtuais.
Comecemos instalando virtualenvwrapper
com pip.
1 |
pip install virtualenvwrapper
|
Após instalar virtualenvwrapper
, precisamos configurar o diretório de trabalho onde os ambientes virtuais serão salvos. Executemos o comando a seguir para criar o diretório de trabalho para o virtualenvwrapper
:
1 |
export WORKON_HOME=.virtualenvs |
O comando acima usa o diretório .virtualenvs
como diretório de trabalho do virtualenvwrapper
.
Podemos tanto fazer o virtualenvwrapper
executar do terminal ou adicionar comandos do virtualenvwrapper
ao .bashrc
.
1 |
source /usr/local/bin/virtualenvwrapper.sh
|



Agora os comandos estão acessíveis na linha de comando atual apertando a tecla Tab. Criemos uma nova pasta de projeto chamada PythonProject
. Naveguemos até ela. Mais cedo, ao usar virtualenv
, criamos o ambiente virtual e então o ativamos. Usando virtualenvwrapper
, realizamos isso com um único comando.
1 |
mkvirtualenv PythonVenv |
O comando acima cria o ambiente virtual e o ativa.



Para desativá-lo, precisamos usar o comando deactivate
.
1 |
deactivate |
Agora, suponhamos que em certos cenários precisamos mudar entre ambientes virtuais diferentes. virtualenvwrapper
provê o método workon
para alterá-los. O comando tem esse formato:
1 |
workon PythonV |
No comando acima, PythonV
é o nome do ambiente virtual. Eis uma imagem onde o comando workon
é visto em ação.



virtualenvwrapper
também provê um comando para listar os ambientes virtuais disponíveis.
1 |
ls $WORKON_HOME |
O comando acima mostra uma lista de ambientes virtuais que existem.



Para remover um ambiente virtual, podemos usar rmvirtualenv
.
1 |
rmvirtualenv PV |



Há um comando que criar uma pasta de projeto e seu ambiente virtual associado. No terminal, executemos o comando a seguir:
1 |
mkproject NewPro |
O comando a seguir deve criar um projeto e seu ambiente virtual associado.



Há alguns outros comandos que podemos usar no virtualenvwrapper
. Podemos ver uma lista de comando disponíveis digitando o comando a seguir:
1 |
virtualenvwrapper |



Resumindo
Nesse tutorial, vimos como começar a usar ambientes virtuais em Python. Aprendemos a importância de seu uso e como funcionam. Também vimos o virtualenvwrapper
, um na ferramenta virtualenv
para lidar com vários ambientes virtuais.
Já usou algum ambiente virtual no Python? Diga-nos o que acha sobre eles nos comentários abaixo.