Publicado em Progamação, Python, Tecnologia

Python: Virtualenv, Virtualenvwrapper e PyGame

Já tinha publicado alguma coisa sobre Virtualenv num outro post, mas queria escrever uma guia com um exemplo prático, no caso, um projeto em Python 3.x e o módulo PyGame; gestionando tudo pelo Virtualenvwrapper.

Recapitulando, Virtualenv vai nos permitir criar um ambiente isolado para o nosso projeto. Esse ambiente vai contar com uma versão específica do Python e de todos aqueles módulos instalados pelo pip. Essas versões, que poderiam ser conflitantes com outras usadas em outros projetos, agora já não o serão, pelo fato de elas serem encapsuladas pelo Virtualenv.

O Virtualenvwrapper, como o nome sugere, é um wrapper que facilita o uso do Virtualenv. E PyGame é um módulo com múltiplas funcionalidades multimídia. Escolhi ele de propósito, devido a que sempre tive bastante dificuldade para conseguir deixar ele funcionando certinho nos projetos que o importavam (com Python 3.x).

Instalando e Configurando

PyPI (Python Package Index) é um repositório open-source de módulos pra linguagem Python. Hoje, ele possui 79335 pacotes disponíveis. E o pip é uma ferramenta para instalar comodamente esses pacotes. Então, vamos instalar ele:

$ sudo apt install python3-pip python-dev build-essential

Agora é a vez do pip instalar o Virtualenv:

$ sudo pip3 install virtualenv

E na sequência, o Virtualenvwrapper:

$ sudo pip3 install virtualenvwrapper

É importante compreender o seguinte: até agora, a gente usou sudo para instalar os pacotes. O sudo instala os pacotes com privilégios de administrador e eles ficam disponíveis pro sistema todo. Isso, a gente quer com o Virtualenv, o Virtualenvwrapper e o pip. Mas, fora dessas ferramentas, a nossa intenção é criar um ambiente isolado. Por exemplo, o PyGame, nós queremos esteja disponível apenas para um projeto em particular e não pros outros.

Agora, precisamos editar o arquivo .bashrc para configurar o Virtualenvwrapper:

$ cd ~
$ cp .bashrc .bashrc.bak
$ nano .bashrc

Adicionamos as seguintes linhas no final do arquivo:

# virtualenv
export WORKON_HOME=~/virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

Finalmente, criamos o diretório virtualenvs:

$ source ~/.bashrc
$ mkdir -p $WORKON_HOME

Pronto!

Criando Ambientes Isolados

Vamos imaginar que temos um projeto em Python 3.x que importa o módulo PyGame. Criamos o ambiente virtual (virtualenv) pro projeto:

$ mkvirtualenv nome_do_projeto

Ele devia aparecer no diretório que criamos previamente:

$ ls ~/virtualenvs

Ativar:

$ workon nome_do_projeto

Desativar:

$ deactivate nome_do_projeto

Instalando Módulos no Ambiente Virtual

Do momento em que ativamos, até desativar, estamos dentro de um ambiente virtual isolado. Ele conta com uma versão específica do Python e módulos do projeto, que não se misturam com os de outros projetos.

Como a gente instalou Virtualenv e Virtualenvwrapper usando pip3, a versão do Python será a 3.x padrão do sistema. Mas, poderíamos ter criado o ambiente virtual usando qualquer outra apontando ao binário correspondente:

$ mkvirtualenv nome_do_projeto --python=/usr/bin/python2.7

Para instalar um módulo precisamos, como já foi explicado, criar (ou ativar) o nosso ambiente virtual, e proceder à instalação sem usar o sudo (não queremos que o módulo fique disponível para todo o sistema):

$ mkvirtualenv nome_do_projeto
$ pip3 install nome_do_modulo

ou

$ workon nome_do_projeto
$ pip3 install nome_do_modulo

PyGame

Para instalar o PyGame precisamos antes instalar algumas dependências (sim, usando o sudo aqui):

$ sudo apt-get install mercurial python3-dev python3-numpy libav-tools \
    libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev \
    libsdl1.2-dev  libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev

Procedimento 1

Não sei por que, mas esse comigo não funciona. Ele é o mais simples entre os recomendados no site oficial, quem sabe você tem sorte:

$ mkvirtualenv nome_do_projeto
$ cd /path/nome_do_projeto
$ echo hg+http://bitbucket.org/pygame/pygame >> requirements.txt
$ pip3 install -r requirements.txt

Procedimento 2

Esse sim funciona comigo:

$ hg clone https://bitbucket.org/pygame/pygame
$ cd pygame
$ python3 setup.py build
$ mkvirtualenv nome_do_projeto --python=/usr/bin/python3
$ workon nome_do_projeto
$ python3 setup.py install --prefix="$HOME/virtualenvs/nome_do_projeto"

Explicando cada passo:

  1. Clonando do Bitbucket o código fonte
  2. Pulando dentro do diretório clonado
  3. Compilando
  4. Criando um ambiente virtual pro projeto, se ele não existir
  5. Ativando, se ele já foi criado
  6. Instalando no diretório do projeto nos virtualenvs

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.