【问题标题】:Error setting environment variables设置环境变量错误
【发布时间】:2014-12-03 21:46:58
【问题描述】:

我正在开发一个 Django 应用程序。我想将 SECRET_KEY 放在环境变量中。 我将此添加到 .bashrc 文件中:

export SECRET_KEY=sdfsjhsuresfsdf

我做了source .bashrc

我可以使用以下命令从 python shell 访问环境变量:

import os
os.environ['SECRET_KEY']

但是,当我尝试从 settings.py 文件访问它时,它会显示 keyError。我做错了什么?

【问题讨论】:

    标签: python linux django environment-variables


    【解决方案1】:

    试试:

    export SECRET_KEY=sdfsjhsuresfsdf
    

    然后重新获取资源。并启动一个新的 Python 实例。然后它应该是可见的。

    Bash 并不总是自动导出其变量。

    通常,由于这些问题,操作系统环境变量很难可靠地放置配置信息。很难追查为什么看到或没有看到变量。从配置文件(无论是 .ini、.json 还是其他格式)中读取配置信息更加健壮一些。但是,环境变量是很常用的,所以,在罗马的时候...

    【讨论】:

    • 还是同样的错误。还有其他方法可以安全地放置钥匙吗?
    • 退出 Python,进入 bash shell。运行echo $SECRET_KEY。这将向您显示外壳是否正确了解该变量。您的 Django 应用程序是否从正确设置了 SECRET_KEY 的 shell 运行?
    • 然后你从那个 shell 运行你的 Django 应用程序,而 Django 应用程序没有选择正确的环境变量设置?
    • 或者您是从 Web 服务器设置(例如在 Apache 下)运行 Django 应用程序吗?如果是这样,它是从一个不同的 shell 运行的,它永远不会从你的本地 .bashrc 获取。另请参阅this。
    • @Monique,这就是原因。 .bashrc 是特定于用户的,它是另一个运行 gunicorn 的用户。问题是该用户也不会加载他的 .bashrc,因为它不需要加载 bash 来运行 Web 服务器。您应该寻找环境变量以外的其他解决方案。
    猜你喜欢
    • 2020-11-18
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2014-12-17
    • 2016-11-09
    • 2019-03-24
    相关资源
    最近更新 更多