4

我在 appengine 上正确导入模块时遇到问题。我的应用程序通常使用 django 和 app-engine-patch,但这部分是仅使用 webapp 框架的任务队列。

我需要导入 django 设置才能使应用程序正常工作。

我的脚本开始于:

import os
import sys
sys.path.append('common/')
# 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' 

我总是收到此错误或相关内容:

<type 'exceptions.ImportError'>: No module named ragendja.settings_pre

因为 settings.py 文件以

from ragendja.settings_pre import *

我想我需要再次将 ragenja 添加到 sys.path 但我有几次尝试都没有成功。

这是我的目录:

project/
    app.yaml
    setting.py
    common/
        appenginepatch/
            ragendja/
                setting_pre.py
    myapp/
        script.py 

它只是一个 sys.path 问题吗?我需要如何使用正确的语法对其进行修改?

谢谢

4

2 回答 2

3

应用引擎补丁在内部操纵 sys.path。后台任务绕过该代码,因此您的路径将无法为 Django 调用做好准备。你有两个选择:

  • 手动修复路径。应用程序引擎文档(请参阅名为“处理导入路径操作”的小节)建议将路径操作代码分解为可由任务脚本导入的模块。

  • 如果可能,消除对 django 代码的依赖。如果您可以将任务编写为纯 python 和/或 google api 调用,那么您就可以开始了。在您的情况下,这可能意味着重构您的设置代码。

于 2010-08-30T13:33:06.087 回答
0

为什么不:

sys.path.append('common/appenginepatch')

因为ragenja在这个目录中?

于 2010-08-30T13:34:21.280 回答