Mini tutorial virtualenvwrapper

dezembro 1, 2011

Não é o guia definitivo do virtualenv, mas serve como um guia rápido de bolso, para o uso diário :)

Praticamente uma tradução do gerenciando ambientes com o virtualenvwrapper.

Criando um ambiente, quando criar o ambiente, o virtualenvwrapper já passa a usá-lo:
mkvirtualenv [nome-do_ambiente]

Instalando um arquivo requirements.pip usando o pip:
pip install -r requirements.pip

Um arquivo requirements.pip é um arquivo texto com uma lista de pacotes, num formato conhecido pelo pip.
Exemplo de um requirements.pip ——————————————–
django=1.3
mock
git+git://github.com/cmheisel/nose-xcover.git#egg=nosexcover

—————————————————————————

No caso acima, ele vai instalar os pacotes:

  • django, na versão 1.3
  • mock, na última versão disponível
  • nose-xcover, usando o último commit, e nomeando o arquivo egg para nosexcover

No momento da criação do ambiente, você pode informar o arquivo de dependências:
mkvirtualenv [nome-do_ambiente] -r requirements.pip

Para ver os ambientes existentes:
lsvirtualenv

Mudar para outro ambiente existente:
workon [nome-do_outro_ambiente]

Para remover um ambiente:
rmvirtualenv [nome-do_ambiente]

Lembrando que para remover o ambiente atual precisa mudar para outro, ou desativar o virtualenvwrapper:
deactivate


Montando um ambiente Python

dezembro 1, 2011

Fui alocado em um projeto feito em Python com Django. Estou montando o ambiente de desenvolvimento e resolvi colocar aqui um passo a passo.

Como estou no MacOS, não precisei instalar o Python.

Instalar o pip no Python do sistema operacional: Ele é um substituto do easy_install. Até agora, o que vi de diferente é que você pode passar um arquivo com suas dependências para ser instalado.
easy_install pip

Instalar o VirtualEnv: Serve para criar ambientes python isolados. Como um RVM, do ruby.
pip install virtualenv

Instalar o Vitual Env Wrapper: Então, aparentemente, o VirtualEnv não tem uns comandos bacanudos como o rvm, daí foi criado esse wrapper, para dar uma moral
pip install virtualenvwrapper

Breve config do Vitual Env Wrapper:
Adicionar no ~/.bashrc, ou ~/.bash_profile:
# VirtualENV config
export WORKON_HOME=~/.virtualenvs
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages --distribute'
source /usr/local/bin/virtualenvwrapper.sh

Assim todos os envs criados não terão uma pasta site-packages e usarão o Distribute.

A partir de agora, não bagunço mais nada no Python do sistema operacional.


Recuperar a versão de uma dependência, em um pom, no bash

outubro 6, 2011

No projeto que estou trabalhando, estou usando Maven, mas nem todas suas dependências estão.

Uma destas dependências continua sendo alterada, e para colocar ela no meu projeto devemos seguir os segintes passos:

  1. O jar cliente é gerado, sempre com o mesmo nome, a partir da execução de um script ant;
  2. Instalo o jar no repositório local do maven, mudando o nome do jar para adicionar a tag do CVS.

Um desenvolvedor do time precisou fazer um script que baixa essa dependência e faz esse processo de build. Mas, para isso precisava da versão do jar, que o projeto em que trabalho depende. A forma para fazer isso foi ler o pom.xml e pegar a versão que o projeto depende.

Seguem os passos:

1. Pegar a tag com a dependência:
grep -B 2 -A 2 "foo-client" pom.xml

Resultado:

<dependency>
    <groupId>com.beyondclick.foo</groupId>
    <artifactId>foo-client</artifactId>
    <version>1.2.42</version>
</dependency>

2. Pegar, somente, a tag com a versão:
grep '<version>'

Resultado:

    <version>1.2.42</version>

3. Pegar somente o conteúdo. Para isso vou usar o sed, substituindo a tag por nada ;)
sed 's#</*version>##g'

Observe o uso do ‘/*’ para informar que deve substituir o fechamento da tag e o ‘g’, no final, para indicar que deve substituir todas as ocorrências.
Resultado:

    1.2.42

Finalmente, encadeando tudo no bash:
grep -B 2 -A 2 "foo-client" pom.xml | grep '<version>' | sed 's#</*version>##g'


Apagar os arquivos retornados pelo find

outubro 3, 2011

Sabe quando você precisa apagar uma lista de arquivos com um determinado padrão? O mais comum é apagar um conjunto de arquivos de uma mesma extensão.

No meu caso, estou querendo apagar os arquivos com extensão .orig, criados pelo git após um merge.

Eu posso usar o find para achar os arquivos terminados com .orig:
find . -iname \*.orig

Depois apagar um a um, usando rm.
rm ./caminho/para/o/arquivo/e_nome_do_arquivo.orig

Mas, se forem muitos arquivos, mais do que um, vou perder um tempo enorme selecionando o nome, copiando e colando com o rm.
Por isso, achei mais interessante usar o resultdo do find como argumento para o rm, através do conceito de pipe, do Bash:
find . -iname \*.orig | xargs rm

Pronto. Arquivos apagados!


Maven Integration for Eclipse 3.7, com WTP.

julho 18, 2011

Com o lançamento do Eclipse 3.7, codinome Indigo, começa minha saga na tentativa de atualizar meu ambiente de trabalho, e todos os problemas relacionados com atualização dos plugins que uso.

Minha principal dificuldade foi na instalação do plugin para o maven: M2Eclipse, quando usado para projetos web. O problema era a extensão do M2Eclipse que configura projetos web, usando o Web Tools Plataform – WTP.

Depois de um tempo buscando, encontrei a informação de que a extensão m2e-wtp está na loja do M2Eclipse. Porém, ao entrar na lojinha, não encontrava a extensão que juravam que estava lá.
Procurando mais um pouco, descrobri que o m2e-wtp tem um problema de compatibilidade com outra extensão. E, por isso, foi removido da loja, como explicado na lista de desenvolvedores. :(

Nesta mesma thread, tem o link que oferece a extensão m2e-wtp para os que não estão usando o a extensão incompatível.

Problema resolvido: Eclipse 3.7 – Indigo com o plugin M2Eclipse e a extensão m2e-wtp, que integra com o WebTools Platform.


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.