我真的很喜欢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
年龄变化率