Um IPython para múltiplos virtualenvs

O IPython e o virtualenv são ferramentas imprescindíveis que utilizo literalmente em todos os projetos.
O uso recorrente destes dois pacotes pode gerar o incômodo de ter que instalar o IPython em cada virtualenv, mas existem alternativas para contornar este inconveniente.

A melhor delas é simplesmente instalar o IPython 0.13 no escopo do seu sistema. Esta versão lançada em junho de 2012 contém o patch para detectar automaticamente o virtualenv ativado.
Esta solução funciona para 90% dos casos. Os 10% restantes incluem cenários onde a versão do Python do seu sistema é diferente do seu virtualenv, por exemplo. Para estes casos especiais, basta instalar o IPython no próprio virtualenv.
Dentre as outras alternativas que observei, duas me chamaram a atenção: (1) incluir o IPython como dependência do projeto no requirements.txt ou (2) criar um requirements_dev.txt para não forçar a instalação do IPython no deploy do projeto.
Ambas devem ser evitadas. A primeira ignora que o IPython é na verdade uma preferência do desenvolvedor e não uma dependência do projeto. Há quem prefira o BPython como meu amigo Rodrigo Cacilhas. A segunda introduz a complexidade de duas listas de dependências usadas em momentos distintos o que é uma receita para desatualização e confusão.
[]’s, HB!

COMPARTILHE ESTE ARTIGO

Share on facebook
Share on linkedin
Share on twitter
Share on email

8 respostas

    1. Legal essa feature de requirements recursivos. Não conhecia. Parece útil para projetos com muitos componentes complexos “espalhados”.

    1. Legal essa feature de requirements recursivos. Não conhecia. Parece útil para projetos com muitos componentes complexos “espalhados”.

    1. Legal essa feature de requirements recursivos. Não conhecia. Parece útil para projetos com muitos componentes complexos “espalhados”.

  1. Eu gosto de deixar as minhas preferencias pessoais em no arquivo “postmkvirtualenv” do virtualenvwrapper

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *