【问题标题】:google app engine (python): ImportError no module named django谷歌应用引擎(python):ImportError no module named django
【发布时间】:2011-02-03 19:48:39
【问题描述】:

所以我正在尝试将 django 1.1 模板引擎与来自 here 的 google app engine web 应用程序框架一起使用。这是在 Ubuntu Jaunty 上,我确保 PYTHONPATH 包含 Django-1.1.1 的位置,但是当它尝试执行下面的 use_library() 行时,我收到了“ImportError: No module named django”错误。再次,有人可以帮助我吗?我被难住了。

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from google.appengine.dist import use_library
use_library('django', '1.1')

【问题讨论】:

    标签: django google-app-engine ubuntu-9.04


    【解决方案1】:

    想出了以下解决方案:

    获取 django 1.1 并将其放在您的项目根目录下。

    将一个空文件“non_gae_indicator”添加到您的项目根文件夹中。

    将 django 和 non_gae_indicator 添加到您的 app.yamlskip_files 元素:

    skip_files:
    - ^(.*/)?app\.yaml
    - ^(.*/)?app\.yml
    - ^(.*/)?index\.yaml
    - ^(.*/)?index\.yml
    - ^(.*/)?#.*#
    - ^(.*/)?.*~
    - ^(.*/)?.*\.py[co]
    - ^(.*/)?.*/RCS/.*
    - ^(.*/)?\..*
    - ^(.*/)?.*\.bak$
    - ^django
    - ^non_gae_indicator
    

    现在我们有办法判断我们是在 GAE-sdk 下运行还是实时运行 - 因为 non_gae_indicator 在我们运行时将不可用。

    所以在 main.py 中你可以这样做:

    if not os.path.exists(os.path.abspath(os.path.dirname(__file__)) + '/non_gae_indicator'):
        # GAE
        from google.appengine.dist import use_library
        use_library('django', '1.1')
    else:
        # Not GAE - Add our django package to the path
        sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)) + '/django')
    

    您应该使用 --allow_skipped_files 标志运行您的本地 SDK 服务器(否则在检查它们时跳过的文件将看起来不存在 - 服务器控制台会发出警告)。

    【讨论】:

      【解决方案2】:

      @stallarida - 问题是 .96 作为 SDK 的默认值提供。我最后所做的,这是一个肮脏的黑客,但有效,是将 appengine 目录中的 django 版本更新为 1.1。工作正常,需要在开发和生产之间进行一些调整。 具体来说,我必须在本地运行时注释掉use_library('django', '1.1'),但在上传我的应用程序时包含它。

      我确信有更好的解决方案,当我的 linux 体验有所改善时,我会解决它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-11
        • 2015-09-10
        • 2017-05-28
        • 1970-01-01
        • 2011-04-08
        • 2016-08-09
        相关资源
        最近更新 更多