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,因此您可能 运行 无论如何都在目录中编写代码,所以我认为其中一个很有可能会起作用。
我已经使用 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,因此您可能 运行 无论如何都在目录中编写代码,所以我认为其中一个很有可能会起作用。