Мне очень нравится virtualenv при работе с кодом Python, и мне интересно, существует ли какой-либо инструмент, который мог бы подражать некоторым из них при работе в bash .

То, что я хочу, это какой-то чисто обратный способ установки переменных среды путем загрузки / выгрузки конфигураций.

Я знаю о многих инструментах, которые совершают магию при входе в какую-то директорию, но, думаю, я бы не хотел начинать с чего-то подобного.

3 ответа3

0

Это действительно старый вопрос, я вижу, и ответы здесь также устарели ...

Я считаю, что текущий (2015) способ сделать это с помощью virtualenv :

В $ {VIRTUAL_ENV}/bin/postactivate:

export DJANGO_SETTINGS_MODULE=app.local_settings

В $ {VIRTUAL_ENV}/bin/ preactivate:

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

Мне нравится virtualenvwrapper, который предлагает, помимо прочего:

  • workon myvenv # активировать мой virtualenv
  • setvirtualenvproject # из каталога проекта, позволяет:
  • cdproject
  • cdvirtualenv
  • deactivate

YMMV

0

Наивная попытка:

загрузить env:

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

При выходе нужно сохранить переменные (или нет, если нежелательно):

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

trap EXIT shvirtualenv_exit

МИНУСЫ:

  • Он не очень хорошо обрабатывает наследование: если вы хотите создать другой env при сохранении, он сохранит все и дальнейшие изменения в родительском env не будут отражены.
  • Другая проблема связана с несколькими сессиями (просто откройте другой терминал) - теперь у вас будут конфликты

СДЕЛАТЬ:

  • Я хотел бы видеть отдельную историю для env.
  • Bashrc для каждого проекта
0

не уверен, что это то, что вы ищете, но у меня есть это в моих файлах 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

он помещает вас во временный каталог с чистой оболочкой для выполнения тестов и впоследствии удаляет его.

virtualenv - плохой пример для bash, потому что здесь вы не "устанавливаете" библиотеки, если вы ищете способ легко переключаться между версиями bash, вы должны упомянуть об этом в вопросе.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .