Lucas Simon

Web Developer. lucassrod@gmail.com

O Python virtualenv

Para iniciarmos o ambiente, precisamos instalar alguns pacotes do Python. Nos exemplos abaixo utilizarei o Debian como sistema operacional, e o apt como gerenciador de pacotes.

Primeiro atualize o gerenciador de pacotes sudo aptitude update && sudo aptitude upgrade e instale os pacotes de desenvolvimento.

sudo aptitude install build-essential python-dev python-virtualenv python-pip python-software-properties

Organizando os diretórios

Eu gosto de separar meus projetos em espaços de trabalhos diferentes.

Por exemplo:

Em meu diretório $HOME crio as seguintes pastas.

mkdir workspace-python
mkdir workspace-[nome da empresa]
mkdir venvs

O diretório workspace-python, dispensa comentários. E o workspace-[nome da empresa] é para separar por projeto e empresa respectivamente.

A pasta venvs será abordada na próxima seção.

Criando o ambiente virtual com o comando virtualenv

Para o desenvolvimento web com Python é de suma importância que haja um ambiente virtual isolado do seu sistema operacional.

Pois caso, instale o Django sem esse ambiente, as bibliotecas baixadas do Django podem atrapalhar as bibliotecas do seu sistema operacional e também em outras instalações por exemplo do Web2py ou Flask caso você queira instalá-las.

Ha particularidades ao se instalar pacotes do python, como o python-psycopg2. Citando um exemplo, em um servidor de produção onde todos os seus projetos utilizam o PostgresSql como SGBD, vale a pena a instalação desse pacote globalmente. Logo abaixo mostrarei como utilizar o virtualenv para utilizar o pacote global.

  • Criando o seu virtualenv
lucas @ notebook in /venvs
$ virtualenv --unzip-setuptools nome_do_projeto
$ cd nome_do_projeto
  • Ativando o virtualenv
lucas @ notebook in /venvs
$ source bin/activate

Após a ativação do ambiente virtualenv o seu shell deverá aparecer algo parecido com isto.

(nome_do_projeto)
lucas @ notebook in /venvs
$

O (nome_do_projeto) nos parêntesis, significa que você esta no ambiente virtual ativado.

  • Desativar o ambiente virtualenv
(nome_do_projeto)
# lucas @ notebook in /venvs
$ deactivate

Opções do virtualenv

O comando virtualenv possui muitas opções. Uma delas utilizada no exemplo acima é o --unzip-setuptools, que descompacta os arquivos fontes e .egg para que você possa visualizá-los.

Abaixo segue o diretório, onde são salvos os pacotes instalados.

(nome_do_projeto)
# lucas @ notebook in /venvs/nome_do_projeto/lib/python2.7/site-packages

Outra opção interessante falada anteriormente é a capacidade do virtualenv utilizar os pacotes instalados globalmente em seus sistema operacional.

Para isso utilize a opção --system-site-packages.

No virtualenv ha varias opções que podem ser usadas, como também passar qual será a versão do interpretador python (-p /usr/bin/python3.3).

O virtualenvwrapper

O virtualenvwrapper nada mais é que uma extensão do virtualenv. Ele entra como um utilitário, para que se tenha menos trabalho ao criar ambientes virtuais.

É necessário ter o pip instalado em seu sistema operacional. Caso não tenha utilize o comando sudo aptitude install python-pip.

Com usuário comum, execute os comandos.

# lucas @ notebook in /venvs
$ sudo pip install virtualenvwrapper

Como estou utilizando o zsh devo editar o arquivo ..zshrc encontrado dentro do meu diretório $HOME.

Se você utiliza o bash, altere o arquivo .bashrc.

Adicione as linhas abaixo no final do arquivo, para que, quando você abra um terminal os comandos relacionados ao virtualenvwrapper sejam sempre executados.

$ tail .zshrc
export WORKON_HOME=~/venvs
source /usr/local/bin/virtualenvwrapper.sh

Utilizando o virtualenvwrapper

Para criar um ambiente virtual, sem ter que utilizar o extenso comando virtualenv --unzip-setuptools nome_do_projeto; cd nome_do_projeto; source bin/activate faça:

# lucas @ notebook in /venvs
$ mkvirtualenv nome_do_projeto_um
$ mkvirtualenv nome_do_projeto_dois

Nota: O mkvirtualenv aceita as mesmas opções do virtualenv

Para alterar de ambiente virtual utilize o workon

# lucas @ notebook in /venvs
$ workon nome_do_projeto_um

(nome_do_projeto_um)
# lucas @ notebook in /venvs
$ workon nome_do_projeto_dois

(nome_do_projeto_dois)
# lucas @ notebook in /venvs
$

Nunca se esqueçam de que o ambiente virtual deve estar ativado.

Abraços a todos!