autoenv在子文件夹中仍然执行
我使用了autoenv这个工具来自动激活virtualenv
。我的Python项目的顶层文件夹里有一个.env
文件,里面写着以下内容:
source venv/bin/activate
每当我进入项目的任何子文件夹时,这个命令就会被执行。然后就会出现以下错误:
-bash: venv/bin/activate: No such file or directory
失败的原因是它试图在子文件夹中执行activate
。为什么即使在子文件夹中也会执行呢?该如何解决这个问题呢?
2 个回答
0
在你的工作区根目录下,有一个 .env
文件,内容是:
test (command -v deactivate) && deactivate
而在你每个相关的项目文件夹里,也需要有:
workon venv_of_project
正如这位朋友所提到的, 这意味着在项目中使用 cd
命令切换目录时,会自动开启和关闭工作区,但至少这样做简单明了,大家都能看得懂发生了什么。
6
今天遇到了这个问题。现在的回答没有提到每次你进入一个子文件夹或者返回根文件夹时,环境都会被激活。通过下面的 .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
把 venv
替换成你自己环境的名字。你可以取消注释 else 块,这样就能看到在所需的环境已经激活的情况下,它不会每次都尝试激活环境。
注意:如果你没有使用 virtualenvwrapper
,那么你应该把 workon
命令替换成你用来激活虚拟环境的命令。不过,我还是推荐使用 virtualenvwrapper
。