Autonomia & Tecnologia

Um IPython para múltiplos virtualenvs

8

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!

você pode gostar também
  • Gleison Rodrigues

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

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

  • Flávio Amieiro

    Só pra lembrar: dá pra fazer o equivalente a um include do requirements.txt no requirements_dev.txt, assim você não precisa manter duas listas separadas (http://www.pip-installer.org/en/latest/requirements.html#recursive-requirements).

    Mesmo assim, concordo que o ipython deve ser instalado pelo desenvolvedor. Realmente não parece fazer muito sentido tratar ele como dependência do projeto.

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

  • Flávio Amieiro

    Só pra lembrar: dá pra fazer o equivalente a um include do requirements.txt no requirements_dev.txt, assim você não precisa manter duas listas separadas (http://www.pip-installer.org/en/latest/requirements.html#recursive-requirements).

    Mesmo assim, concordo que o ipython deve ser instalado pelo desenvolvedor. Realmente não parece fazer muito sentido tratar ele como dependência do projeto.

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

  • Flávio Amieiro

    Só pra lembrar: dá pra fazer o equivalente a um include do requirements.txt no requirements_dev.txt, assim você não precisa manter duas listas separadas (http://www.pip-installer.org/en/latest/requirements.html#recursive-requirements).

    Mesmo assim, concordo que o ipython deve ser instalado pelo desenvolvedor. Realmente não parece fazer muito sentido tratar ele como dependência do projeto.

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