【问题标题】:import django settings in app-engine-patch在 app-engine-patch 中导入 django 设置
【发布时间】:2011-04-04 12:28:02
【问题描述】:

我的 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?

谢谢!

【问题讨论】:

    标签: python django google-app-engine app-engine-patch


    【解决方案1】:

    改变

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

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

    DJANGO_SETTINGS_MODULE 的值是模块的名称(即,您将在 Python 脚本的 import 语句中编写它),而不是模块的路径。

    【讨论】:

    • 您在 App Engine 项目的根目录中有一个名为 settings.py 的文件?
    • 是的。我认为它可以毫无问题地找到 settings.py 文件,但是该文件以 from ragendja.settings_pre import * 由于 app-engine-patch 路径修改,未找到 ragendja (而在应用程序的其余部分中正确导入) .
    • 因此您必须手动修改您的sys.path 以使ragendja 模块可用。无论您在哪里进行 os.environ 修改,请确保 ragendja 模块在 sys.path 中。
    • 我该怎么做?我是这个问题的新手。
    • 可能应该是一个单独的问题,或谷歌搜索,但这里是简短的版本:import sys; sys.path.append('path/to/parent/dir/of/ragendja/module/')。因此,假设您的 ragendja 模块位于项目根目录下的 appenginepatch/ragendja/ 处,您将使用类似 appenginepatch/ 的内容作为 sys.path.append 的参数。
    【解决方案2】:

    感谢另一个问题,我将 beinning 替换为:

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

    这会导入所有设置,我的任务可以在不参考 Django 的情况下运行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 2010-10-23
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      相关资源
      最近更新 更多