Bash 的虚拟环境

Bash 的虚拟环境

我真的很喜欢virtualenv使用 Python 代码,并且想知道是否存在一些工具可以在工作时模拟其中的一些代码bash

我想要的是通过加载/卸载配置来以某种干净利落地方式设置环境变量。

我知道很多工具在进入某个目录时会产生一些神奇的效果,但我想我不会想从这样的东西开始。

答案1

不确定这是否是你要找的,但我有这个我的 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 版本之间轻松切换的方法,你应该在问题中提到这一点。

答案2

一次天真的尝试:

加载环境:

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

退出时应该保存变量(如果不需要则不保存):

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

trap EXIT shvirtualenv_exit

缺点:

  • 它不能很好地处理继承:如果您想在保存时获取另一个环境,它将保存所有内容,并且不会反映父环境中的进一步更改。
  • 另一个问题是多个会话(只需打开另一个终端)——现在你最终会遇到冲突

去做:

  • 我很想看到环境的单独历史。
  • 每个项目的 bashrc

答案3

我认为这是一个非常古老的问题,而且这里的答案同样过时了......

我认为目前(2015 年)的做法是虚拟环境是:

在 ${VIRTUAL_ENV}/bin/postactivate 中:

export DJANGO_SETTINGS_MODULE=app.local_settings

在 ${VIRTUAL_ENV}/bin/predeactivate 中:

unset DJANGO_SETTINGS_MODULE

一句话:

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

我喜欢虚拟环境包装器,其中包括:

  • workon myvenv# 激活我的虚拟环境
  • setvirtualenvproject# 从项目目录,允许:
  • cdproject
  • cdvirtualenv
  • deactivate

年龄变化率

相关内容