RSS

PyDev, Django e virtualenv

27 nov

Ainda não sou muito especialista em Python, mas recentemente eu me deparei com uma situação curiosa: na empresa em que eu trabalho, precisamos manter uma versão específica do Django porque a maioria dos sites que a gente desenvolveu há um bom tempo rodam nessa versão; Mas sempre nós sentimos a necessidade de evoluir e usar os novos recursos do Django (já estou sonhando com as novas templatetags condicionais que vão facilitar demais a minha vida :D ). Ai vem a grande pergunta: como é que faz pra rodar mais de uma versão do Django sem comprometer a versão padrão instalada no sistema?

Já ouço da boca dos “djangueiros” da empresa que a melhor solução seria o virtualenv. Ele cria ambientes virtuais para Python, permitindo que você instale livremente suas bibliotecas, assim como também é possível ter vários ambientes virtuais com versões específicas, formando seus “kits” de desenvolvimento (tipo se você desenvolve pra 3 ou 4 versões diferentes do Django, é possível fazer um virtualenv para cada versão e alternar facilmente entre elas). Mais legal ainda é a facilidade que o PyDev oferece para usar o virtualenv, com alguns cliques você troca de ambiente.

Mas enfim, vamos ao que interessa:

Instalando os pacotes básicos

Fiz uma pesquisa tanto para Windows quanto para Ubuntu acerca desse passo. No Ubuntu, você pode usar o apt-get para instalar os pacotes necessários:

$ sudo apt-get install python-setuptools python-dev build-essential

$ sudo easy_install -U pip

Searching for pip

Reading http://pypi.python.org/simple/pip/

Reading http://pip.openplans.org

Best match: pip 0.7.1

Downloading http://pypi.python.org/packages/source/p/pip/pip-0.7.1.tar.gz#md5=420c83ad67bdcb542f772eb64392cce6

Processing pip-0.7.1.tar.gz

Running pip-0.7.1/setup.py -q bdist_egg –dist-dir /tmp/easy_install-lEQ9xp/pip-0.7.1/egg-dist-tmp-KOpPI1

warning: no previously-included files matching ‘*.txt’ found under directory ‘docs/_build’

no previously-included directories found matching ‘docs/_build/_sources’

zip_safe flag not set; analyzing archive contents…

pip.basecommand: module references __file__

pip.runner: module references __file__

pip.venv: module references __file__

pip.vcs.__init__: module references __file__

Adding pip 0.7.1 to easy-install.pth file

Installing pip script to /usr/local/bin

Installed /usr/local/lib/python2.6/dist-packages/pip-0.7.1-py2.6.egg

Processing dependencies for pip

Finished processing dependencies for pip

No caso do Windows, basta baixar os pacotes setuptools e pip, exatamente nessa ordem, diretamente do Python Package Index. Dê preferência aos pacotes que já tem instalador para Windows (no nosso caso, apenas o setuptools), mas mesmo que não haja instalador não tem problema. Nos pacotes sem instalador, apenas descompacte o pacote e execute o setup.py da seguinte maneira:

python setup.py install

Os passos a seguir podem ser aplicados tanto para o Windows quanto para o Ubuntu (no caso do Windows, obviamente não é necessário o sudo):

$ sudo pip install -U virtualenv

Downloading/unpacking virtualenv

Downloading virtualenv-1.4.8.tar.gz (1.5Mb): 1.5Mb downloaded

Running setup.py egg_info for package virtualenv

warning: no previously-included files matching ‘*.*’ found under directory ‘docs/_templates’

Installing collected packages: virtualenv

Running setup.py install for virtualenv

warning: no previously-included files matching ‘*.*’ found under directory ‘docs/_templates’

Installing virtualenv script to /usr/local/bin

Successfully installed virtualenv

Cleaning up…

Criando o ambiente virtual

O comando a seguir cria o ambiente virtual propriamente dito. O parâmetro --no-site-packages diz para o virtualenv não herdar nenhuma biblioteca instalada na pasta site-packages da instalação existente do Python. Para mais informações, consulte a documentação do virtualenv sobre o parâmetro –no-site-packages.

$ virtualenv --no-site-packages --distribute meuvirtualenv

New python executable in meuvirtualenv/bin/python

A globally installed setuptools was found (in /usr/lib/python2.6/dist-packages)

Use the –no-site-packages option to use distribute in the virtualenv.

Installing distribute…………………………………………………………………………………..done.

Instalando pacotes no seu ambiente virtual

Use a opção -E do pip para instalar pacotes num ambiente específico (no exemplo abaixo eu sugeri a instalção do yolk, uma ferramenta para listar pacotes instalados):

$ pip install -E meuvirtualenv yolk

Downloading/unpacking yolk

Downloading yolk-0.4.1.tar.gz (80Kb): 80Kb downloaded

Running setup.py egg_info for package yolk

Requirement already satisfied (use –upgrade to upgrade): distribute in ./meuvirtualenv/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg (from yolk)

Installing collected packages: yolk

Running setup.py install for yolk

Installing yolk script to /home/timoteoramos/meuvirtualenv/bin

Successfully installed yolk

Cleaning up…

Ativando um ambiente virtual e usando-o

  • Ative o ambiente virtual criado (no meu exemplo, o ambiente está em /home/timoteoramos):
    $ source meuvirtualenv/bin/activate
    Ou no Windows:
    meuvirtualenv\Scripts\activate.bat
  • Execute o yolk para listar os pacotes instalados:
    $ yolk -l 

    Python – 2.6.4 – active development (/usr/lib/python2.6/lib-dynload)

    distribute – 0.6.10 – active

    pip – 0.7.1 – active

    wsgiref – 0.1.2 – active development (/usr/lib/python2.6)

    yolk – 0.4.1 – active

  • Desative o ambiente:
    $ deactivate
  • Tente executar o yolk:
    $ yolk -l 

    yolk: command not found

Assim como o yolk, é possível instalar qualquer pacote disponível no pip, inclusive o Django, basta especificar o nome do pacote. No caso do Django mesmo não tem nenhum segredo, é só mandar um pip install -E meuvirtualenv Django.

Rodando o seu virtualenv no PyDev

Jurava que isso ia dar trabalho, mas foi tão fácil que me deixou até intrigado, num merece nem screenshot hehehe

  • Com a IDE aberta, vá em Window / Preferences. Na janela que irá abrir, siga para PyDev / Interpreter – Python
  • Adicione um novo interpretador clicando em New; encontre o executável do Python dentro do seu virtualenv (no Windows fica em Scripts, no Linux em geral fica em bin)
  • Assim que você adicionar o interpretador e der o devido nome para ele (geralmente descrevendo o virtualenv, tipo “virtualenv – Django 1.x.x”), o PyDev logo vai perguntar pelas pastas que ele irá incluir, e “surpresa”: todos os includes corretos vem marcados! É só clicar em OK e pronto :D
  • Para alternar de virtualenv (ou mesmo voltar para o interpretador do sistema), basta alterar as propriedades do seu projeto e escolher o interpretador que você deseja.

Espero que isso facilite mais um pouco os desenvolvedores de Django que curtem o Aptana Studio e o PyDev.

Referência: SaltyCrane Blog – Notes on using pip and virtualenv with Django

 
2 Comments

Publicado por em 27 27UTC novembro 27UTC 2010 em Django, Web

 

Tags: , , ,

2 respostas para PyDev, Django e virtualenv

  1. Hersonls

    3 03UTC fevereiro 03UTC 2011 at 8:12 PM

    Muito bom, sempre com artigos super detalhados e de fácil entendimento

     
  2. Guilherme Ferreira

    4 04UTC maio 04UTC 2011 at 2:59 AM

    Estou usando aptana studio 3 com pydev. obrigado pela dica.

     

Deixe uma resposta

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

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

 
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.