2010-04-02 46 views
2

因此,我试图从here谷歌应用程序引擎web应用框架使用django 1.1模板引擎。这是在Ubuntu Jaunty上,我确信PYTHONPATH包含Django-1.1.1的位置,但是当它尝试执行下面的use_library()行时,我得到了'ImportError:No module named django'错误。再次,有人能帮助我吗?我很难过。谷歌应用程序引擎(python):ImportError没有名为django的模块

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

回答

0

@stallarida - 问题是.96作为SDK默认发货。最后我做了什么,这是一个肮脏的黑客,但工作,是将appengine目录中的django版本更新到1.1。工作得很好,需要在开发和生产之间调整一下。 具体而言,我必须在本地运行时注释掉use_library('django', '1.1'),但在上传我的应用时将其包含在内。

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

3

想出了以下解决方案:

获取的Django 1.1,并把它你的项目根目录下。

向项目根文件夹中添加一个空文件“non_gae_indicator”。

添加Django和non_gae_indicator您app.yaml skip_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服务器(或者跳过的文件会出现检查时他们不存在 - 的服务器控制台给出了一个警告)。

相关问题