【问题标题】:Python's os.getenv() doesn't seem to work on OSX MavericksPython 的 os.getenv() 似乎不适用于 OSX Mavericks
【发布时间】:2014-01-15 23:44:13
【问题描述】:

在 OSX Maverick 的终端中,我将 env 变量设置为:

export FLASK_CONF=DEV

然后使用export 我可以确认变量已设置。

declare -x FLASK_CONF="DEV"
...

现在当我在 GAE 下运行我的应用程序时:dev_appserver.py src/

我收到生产环境已加载而不是开发环境的消息:

INFO     2014-01-15 23:39:41,702 __init__.py:38] Staging/Production Env found

这是代码:

if os.getenv('FLASK_CONF') == 'DEV':
    logging.info("DEV ENv found")
    app.config.from_object('application.settings.Development')
elif os.getenv('FLASK_CONF') == 'TEST':
    logging.info("TEST Env found")
    app.config.from_object('application.settings.Testing')
else:
    logging.info("Staging/Production Env found")
    app.config.from_object('application.settings.Production')

我 100% 确定这在以前的 Mountain Lion 上运行良好。它可能与 Maverick OSX 如何设置/使用环境变量有关吗?任何建议如何解决这个问题?

【问题讨论】:

  • Here 是对 Mavericks 的一项快速测试,以证明它正在设置环境变量和 Python(Mavericks 内置的那个,但同样适用于其他 7 个 CPython 版本和机器上的 PyPy...) 能够看到它们。
  • 所以大概还有其他问题。为了调试它,我们需要一个完整的示例(参见MCVE)来重现问题,而不仅仅是一个单独工作但在您的环境中不起作用的代码片段。

标签: python macos google-app-engine osx-mavericks


【解决方案1】:

尝试在 app.yaml 中使用 env_variables 定义您的环境变量:

env_variables:
  FLASK_CONF: 'DEV'

【讨论】:

  • 是的,行得通。谢谢。看来 GAE 是在一个孤立的环境下运行的。
  • @Hooman - devappserver 的目标是重现您的应用在云中运行时的环境。
猜你喜欢
  • 2014-04-13
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-04
  • 2023-04-06
  • 2017-08-01
相关资源
最近更新 更多