使用 pyenv-virtualenv 触发不同的应用程序环境

triggering different app environments with pyenv-virtualenv

使用 virtualenvwrapper,我可以设置单独的 virtualenvs 并调用 workon venv 让它们 link 到特定的设置文件(例如 test_settings.py 或 dev_settings.py) 我在 virtualenv 的 bin 中使用钩子进行了预设 - preactivate、postactivate、predeactivate 和 postdeactivate。

pyenv 有等效的东西吗? pyenv-virtualenv 根据当前目录中设置的 .python-version 自动切换 virtualenvs,因此无需激活,并且 .pyenv/versions/venv/bin/ 目录没有 virtualwrapper 拥有的 hooks 无论如何.

我可以轻松地为我的各种应用程序环境创建不同的 virtualenvs,但是我如何才能 link 它们针对不同环境特定的应用程序设置?

本着 autoenv after reading this forum reply 其他地方的精神,我最终将环境变量 export something='something-else' 命令添加到激活文件 ~/.pyenv/versions/my_venv/bin/activate

两个想法:

  • 最明显的一个:试试 pyenv 的 pyenv-virtualenvwrapper 插件?

  • 您可以在 $PYENV_ROOT/pyenv.d/<command> 中为特定的 pyenv 命令添加挂钩。您甚至可以为用户通常不直接调用的 pyenv 的“瓷器”命令执行此操作。你可以为 activate 编写一个钩子,它根据你要切换到的 virtualenv 的名称更改设置。 (当切换到 virtualenv 时,pyenv-virtualenv 隐式 pyenv activate)。注意:我已经创建了 pyenv 钩子,但不是为 activate,所以这只是一个想法......