在app-engine-patch中导入django设置
我在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的情况下运行了。