在app-engine-patch中导入django设置

2 投票
2 回答
1208 浏览
提问于 2025-04-16 03:21

我在Django的设置上遇到了一些问题。我的应用程序是用app-engine-patch运行的。我添加了一个脚本,这个脚本可以不通过Django直接运行,并且是通过app.yaml中的处理程序直接访问的。结果我遇到了这个错误:

File "/base/python_runtime/python_lib/versions/third_party/django-0.96/django/conf/__init__.py", line 53, in _import_settings
raise EnvironmentError, "Environment variable %s is undefined." % ENVIRONMENT_VARIABLE
<type 'exceptions.EnvironmentError'>: Environment variable DJANGO_SETTINGS_MODULE is undefined.

我在谷歌上找到了一些提示:

# Force Django to reload its settings.
from django.conf import settings
settings._target = None

# Must set this env var before importing any part of Django
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 

但是我又遇到了这个错误:

raise EnvironmentError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)
<type 'exceptions.EnvironmentError'>: Could not import settings 'settings.py' (Is it on sys.path? Does it have syntax errors?): No module named ragendja.settings_pre

我觉得这可能是app-engine-patch修改路径的问题,我该如何正确导入settings_pre呢?

谢谢!

2 个回答

3

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings.py' 

改为

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

DJANGO_SETTINGS_MODULE的值是模块的名称(也就是你在Python脚本中用import语句写的那种形式),而不是模块的路径。

0

感谢另一个问题,我把开头的部分换成了:

from common.appenginepatch.aecmd import setup_env 
setup_env(manage_py_env=True)

这样做可以导入所有的设置,我的任务就可以在不依赖Django的情况下运行了。

撰写回答