Virtualenv para bash

0

Eu realmente gosto de virtualenv ao trabalhar com código python e estou imaginando se existia alguma ferramenta que pudesse emular algumas delas ao trabalhar em bash .

O que eu quero é uma maneira limpa e reversível de configurar variáveis de ambiente carregando / descarregando configurações.

Eu sei de muitas ferramentas que fazem mágica ao entrar em algum diretório, mas eu acho que não gostaria de começar de algo assim.

    
por Benjamin Bannier 01.01.2012 / 03:36

3 respostas

0

não tenho certeza se é o que você está procurando, mas eu tenho isso em meus arquivos rc :

mklab() {
    # creates small test environments for scripting
    local d=$(mktemp -d) && cd "$d" || return 1
    clear; bash --login --noprofile --norc
    cd - && rm -r "$d"
}; export -f mklab

ele coloca você em um diretório temporário com um shell limpo para fazer testes e removê-lo posteriormente.

virtualenv é um mau exemplo para o bash porque aqui você não "instala" bibliotecas, se você está procurando uma maneira de alternar facilmente entre versões bash você deve mencionar isso na questão.

    
por 01.01.2012 / 07:40
0

Uma tentativa ingênua:

para carregar env:

shvirtualenv() ( source "$1"; VIRTUALENV="$1" bash; )

Na saída, deve-se salvar as variáveis (ou não, se indesejável):

shvirtualenv_exit() {
    # one could ask here whether to save the env:
    declare -x > $VIRTUALENV
}

trap EXIT shvirtualenv_exit

CONS:

  • Ele não manipula bem a herança: se você quiser originar outro env ao salvar, ele salvará tudo e mais alterações no env pai não serão refletidas.
  • Outro problema é com várias sessões (basta abrir outro terminal) - agora você vai acabar com conflitos

TODO:

  • adoraria ver um histórico separado para o env.
  • por projeto bashrc
por 04.01.2012 / 12:07
0

Essa é uma pergunta muito antiga, eu vejo, e as respostas aqui estão semelhantemente desatualizadas ...

Eu acredito que a maneira atual (2015) de fazer isso com virtualenv é:

Em $ {VIRTUAL_ENV} / bin / postactivate:

export DJANGO_SETTINGS_MODULE=app.local_settings

Em $ {VIRTUAL_ENV} / bin / predeactivate:

unset DJANGO_SETTINGS_MODULE

Oneliners:

echo 'DJANGO_SETTINGS_MODULE=EOS.local_settings' >> ${VIRTUAL_ENV}/bin/postactivate
echo 'unset DJANGO_SETTINGS_MODULE' >> ${VIRTUAL_ENV}/bin/predeactivate

Eu gosto de virtualenvwrapper , que oferece, entre outras coisas:

  • workon myvenv # ativa meu virtualenv
  • setvirtualenvproject # do diretório do projeto, permite:
  • cdproject
  • cdvirtualenv
  • deactivate

YMMV

    
por 21.07.2015 / 06:47