pyenv-virtualenv 中的环境变量

Enviroment variables in pyenv-virtualenv

我已经使用 pyenv virtualenv 3.5.9 projectname 创建了一个用于开发 django 项目的虚拟环境。

如何为我的代码设置环境变量?

我尝试在/Users/developer/.pyenv/versions/projectname/bin/activate中添加环境变量DATABASE_USER 像这样:

export DATABASE_USER="dbuser"

当我尝试 echo $DATABASE_USER 时打印了一个空字符串。

已尝试安装 zsh-autoenv

现在我可以 echo $DATABASE_USER 并获取在 .autoenv.zsh 文件中设置的值。

但我似乎无法让环境变量可用于我的 Django 代码:

如果我尝试在 virtualenv 中的 python shell 中 os.getenv('DATABASE_USER', ''),我会得到 ''

有什么问题吗? zsh-autoenv 变量是否仅适用于 zsh shell 而不是 python manage.py shell

我也在想类似的事情,我偶然发现了一个 reddit thread where someone else had asked the same question, and eventually followed up 注意到一些有趣的发现。

如您所见,pyenv 似乎并未实际使用 bin/activate 文件。他们没有说激活方法是什么,但是像你一样,在那里添加环境变量没有结果。

最后,他们安装了 autoenv,它自称是基于目录的环境。它允许您在目录中创建一个 .env 文件,当您 cd 进入该目录时,它会运行 .env 文件。您可以将它用于环境变量,也可以向其中添加任何其他内容。

我在 autoenv 页面上注意到他们说您应该改用 direnv,因为它具有更好的功能并且是更高质量的软件。这些都不是 Python 或 pyenv 特定的,如果您从目录外部调用 python 代码,它们可能无法工作。由于您使用的是 pyenv,因此您可能 运行 无论如何都在目录中编写代码,所以我认为其中一个很有可能会起作用。