如何在进入autoenv目录时仅调用一次workon?

3 投票
2 回答
692 浏览
提问于 2025-04-18 02:33

Autoenv 真是太棒了!不过,我发现我的终端变得有点慢,因为每次我在 autoenv 根目录下从一个文件夹切换到另一个文件夹时,autoenv 都会调用 workon。请问我该如何调整我的 .env 文件,让 workon 只在我第一次进入这个文件夹时被调用呢?

2 个回答

1

如果你有多个项目,每个项目都有自己的虚拟环境(virtualenv),而你希望在进入项目文件夹时自动切换到相应的虚拟环境(当然,确保只有在必要的时候才调用 workon),那么你需要在你的 .env 文件中添加一些额外的逻辑:

venv=venv
currentvenv=""

if [[ $VIRTUAL_ENV != "" ]]
then
  # Strip out the path and just leave the env name
  currentvenv="${VIRTUAL_ENV##*/}"
fi

if [[ "$currentvenv" != "$venv" ]]
then
  echo "Switching to environment: $venv"
  workon $venv
#else
#  echo "Already on environment $venv"
fi

可以参考 这个链接

2

我在我的 .env 文件里有这些内容:

type deactivate &>/dev/null || source venv/bin/activate

检查一下环境是否已经激活。如果没有激活,就激活这个环境;如果已经激活了,就不做任何事情。

撰写回答