direnv 可以在进入某个项目目录时,自动加载该目录下的环境配置;离开目录时,自动恢复原来的环境。
常见用途:
.venvPATH、配置或密钥变量如果还没有安装,可以使用 Homebrew:
brew install direnv
如果你使用的是 zsh,需要在 ~/.zshrc 中加入:
eval "$(direnv hook zsh)"
加入后,让配置立即生效:
source ~/.zshrc
这一步通常只需要做一次。
进入你的项目目录,例如:
cd /path/to/your/project
使用 uv 创建虚拟环境:
uv venv
这会生成:
.venv/
在项目目录中创建 .envrc:
echo 'source .venv/bin/activate' > .envrc
.envrc 的内容是:
source .venv/bin/activate
意思是:进入这个目录时,自动执行虚拟环境激活命令。
第一次创建或修改 .envrc 后,需要执行:
direnv allow
这是 direnv 的安全机制,防止自动执行不可信脚本。
离开目录再重新进入:
cd ..
cd /path/to/your/project
如果看到类似提示,说明成功:
direnv: loading .envrc
也可以检查当前虚拟环境:
echo $VIRTUAL_ENV
如果输出类似:
/path/to/your/project/.venv
说明 .venv 已经自动激活。
假设新项目路径是:
/Users/shenliang/Projects/MyProject
完整流程是:
cd /Users/shenliang/Projects/MyProject
uv venv
echo 'source .venv/bin/activate' > .envrc
direnv allow
之后每次进入这个目录:
cd /Users/shenliang/Projects/MyProject
都会自动激活:
/Users/shenliang/Projects/MyProject/.venv
离开目录后,环境会自动恢复。
查看当前目录的 direnv 状态:
direnv status
重新授权当前目录:
direnv allow
禁止当前目录的 .envrc:
direnv deny
手动重新加载 .envrc:
direnv reload
.envrc 文件。.envrc 后,都需要重新执行 direnv allow。direnv allow。如果新终端没有自动生效,检查 ~/.zshrc 是否包含:
eval "$(direnv hook zsh)"
如果使用的是 bash,需要放到 ~/.bashrc:
eval "$(direnv hook bash)"