【问题标题】:Ubuntu Setting Environment Variables for DjangoUbuntu 为 Django 设置环境变量
【发布时间】:2018-02-11 01:42:53
【问题描述】:

我有一个使用 Nginx 和 Gunicorn 在 Ubuntu 16.04 上运行的 Django 项目。 我正在尝试设置一个环境变量,以便为生产加载不同的设置文件。我试过以下没有占上风。

在 etc/environment 我添加了我的变量。文件长这样,

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

PRODUCTION="Production_Variable"

变量的值无关紧要。

当我运行 printenv 时,我可以看到这个变量确实存在! 但是我的 django 项目仍然没有“看到”它。

try:  
    if 'PRODUCTION' in os.environ:

        from .prod import *

except:
    pass

我有点困惑 printenv 显示环境变量存在,但 Django 看不到它。我正在尝试的东西看起来有什么明显的错误吗?

【问题讨论】:

  • 你在设置环境之前启动了Django吗?仅在启动期间评估设置。
  • 我确保它在设置变量后重新启动。
  • 您正在验证您的导入语句是否已运行,并且没有抛出异常?
  • 是的,我也担心同样的事情,并确认没有例外。
  • 好的,这是您的整个设置文件?你的项目布局是什么?

标签: python django ubuntu nginx environment-variables


【解决方案1】:

好的,我希望这对将来遇到同样问题的人有所帮助。我最终编辑了我的 gunicorn.service 文件并添加了以下行..

Environment="Production=production"

所以我的文件看起来像这样

[Unit]
Description=gunicorn daemon
After= network.target

[Service]
User=root
Group=www-data
Environment="Production=production"
WorkingDirectory= # stuff

[Install]
WantedBy=multi-user.target

【讨论】:

    【解决方案2】:

    看看 django 自己的设置文件。

    Django Settings

    这部分可能会有所帮助

    在设置文件中添加自定义环境变量:

    MY_CUSTOM_SETTINGS = 'hello'
    

    然后您可以使用以下方式访问它:

    from django.conf import settings
    In [5]: print(settings.MY_CUSTOM_SETTINGS)
    hello
    

    【讨论】:

    • 感谢您的链接。我之前确实研究过,但是,这不是我想要实现的目标。
    • 仅链接的答案很糟糕。至少复制你认为与手头问题相关的部分。
    • 我的错,从链接中添加了相关部分。感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    相关资源
    最近更新 更多