gpt4 book ai didi

Python os.environ 抛出关键错误?

转载 作者:太空狗 更新时间:2023-10-29 17:49:42 28 4
gpt4 key购买 nike

我正在使用 os.environ.get 访问脚本中的环境变量,它抛出一个 KeyError。它不会从 Python 提示中抛出错误。这是在 OS X 10.11.6 上运行的,是 Python 2.7.10。

这是怎么回事?

$ python score.py
Traceback (most recent call last):
File "score.py", line 4, in <module>
setup_logging()
File "/score/log.py", line 29, in setup_logging
config = get_config()
File "/score/log.py", line 11, in get_config
environment = os.environ.get('NODE_ENV')
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/UserDict.py", line 23, in __getitem__
raise KeyError(key)
KeyError: 'NODE_ENV'
$ python -c "import os; os.environ.get('NODE_ENV')"
$

根据要求,这里是score.py的源代码

from __future__ import print_function

from log import get_logger, setup_logging
setup_logging()
log = get_logger('score')

这里是 log.py

import json
import os
import sys

from iron_worker import IronWorker
from logbook import Logger, Processor, NestedSetup, StderrHandler, SyslogHandler

IRON_IO_TASK_ID = IronWorker.task_id()

def get_config():
environment = os.environ.get('NODE_ENV')
if environment == 'production':
filename = '../config/config-production.json'
elif environment == 'integration':
filename = '../config/config-integration.json'
else:
filename = '../config/config-dev.json'

with open(filename) as f:
return json.load(f)

def setup_logging():
# This defines a remote Syslog handler
# This will include the TASK ID, if defined
app_name = 'scoreworker'
if IRON_IO_TASK_ID:
app_name += '-' + IRON_IO_TASK_ID

config = get_config()

default_log_handler = NestedSetup([
StderrHandler(),
SyslogHandler(
app_name,
address = (config['host'], config['port']),
level = 'ERROR',
bubble = True
)
])
default_log_handler.push_application()

def get_logger(name):
return Logger(name)

最佳答案

尝试运行:

find . -name \*.pyc -delete

删除您的.pyc 文件。

研究我遇到的问题 this question ,用户遇到了同样的事情:.get() 似乎引发了 KeyError。在那种情况下,它是根据 this accepted answer 引起的, 通过 .pyc 文件,其中包含通过键访问 dict 值的代码(即 mydict['potentially_nonexistent_key']),而回溯显示更新后的 .py 文件中使用了 .get() 的代码。我从未听说过这种情况,其中回溯引用了 .py 文件中的当前代码,但显示了过时的 .pyc 文件引发的错误,但它似乎在 Python 的历史上至少发生过一次……

希望不大,但我认为值得一试。

关于Python os.environ 抛出关键错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39280435/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com