【问题标题】:How do I use variables created in venv bash in my django app?如何在我的 django 应用程序中使用在 venv bash 中创建的变量?
【发布时间】:2016-09-25 22:58:54
【问题描述】:

如果我像这样在我的 venv 中创建一个变量

DJANGO_SERVER_TYPE=local

在heroku上我有

DJANGO_SERVER_TYPE=production

为什么我的系统不能识别这个

from .base import *
import os
if os.environ['DJANGO_SERVER_TYPE'] == 'local':
    try:
        from .local import *
    except:
        pass

if os.environ['DJANGO_SERVER_TYPE'] == 'production':
    try:
        from .production import *
    except:
        pass

我不断收到此错误

File "/Users/ray/Desktop/myheroku/practice/src/gettingstarted/settings/__init__.py", line 3, in <module>
    if os.environ['DJANGO_SERVER_TYPE'] == 'local':
    File "/Users/ray/Desktop/myheroku/practice/bin/../lib/python3.5/os.py", line 683, in __getitem__
    raise KeyError(key) from None
    KeyError: 'DJANGO_SERVER_TYPE'

如何使用我创建的局部变量?

【问题讨论】:

  • 我对heroku了解不多,但如果DJANGO_SERVER_TYPE=production是你的设置,你可能想试试export DJANGO_SERVER_TYPE=productionexport 将使 env 变量在所有会话中都可用。
  • @ShangWangthanks 但这不是问题

标签: django bash heroku environment-variables development-environment


【解决方案1】:

问题是您的环境变量在本地不存在。本地设置环境变量的方法有很多。

我强烈推荐使用由 Kenneth Reitz 编写的 autoenv。这是一个很酷的工具,您可以在计算机上本地安装。请参阅setting an environment variable in virtualenv 了解更多信息。

它的工作方式是在项目目录中定义一个名为.env 的文件,并在其中列出所有环境变量。例如:

export DJANGO_SERVER_TYPE=local

每次您在命令行上输入该目录(如cd ~/my_project)时,autoenv 都会自动将您在该文件夹中的任何环境变量设置为活动状态。很有用。

无论如何,无论您当前存储环境变量的何处,如果您不想使用 autoenv 之类的东西,则需要 export 它们。

所以,假设您有一个文件 (env.sh),其中定义了您的环境变量,如下所示:

DJANGO_SERVER_TYPE=local

您可以通过说 sh env.sh 来“运行”此文件。现在,您可能期望它会运行,并且您现在会在环境变量中定义 DJANGO_SERVER_TYPE,对吧?

嗯,不完全是。

sh(您在此处实际使用的脚本语言)中,如果您希望将变量导出到运行脚本之外,则需要将export 关键字放在变量前面。

因此,为了实际设置您的变量,您必须说:

export DJANGO_SERVER_TYPE=local

然后将该文件作为脚本运行:sh env.sh。如果你这样做,你会注意到现在你的环境变量已经设置好了。

在测试时要知道的另一件有用的事情是,如果您在命令行上运行env 命令,它将输出当前在本地设置的所有环境变量的列表。这对调试很有用,例如:

env | grep DJANGO_

【讨论】:

  • rdegges 它在我的 heroku 应用程序上。上面说了。但是感谢您的回复
  • 对不起@nothingness,误读了您的问题。我刚刚更新了我的答案以反映它=)
猜你喜欢
  • 2020-05-17
  • 2019-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-29
  • 1970-01-01
  • 2021-12-18
  • 2011-03-07
相关资源
最近更新 更多