2010-04-02 2 views
2

Итак, я пытаюсь использовать движок шаблонов django 1.1 с платформой веб-приложений движка Google, от here. Это на Ubuntu Jaunty, я убедился, что PYTHONPATH содержит местоположение Django-1.1.1, но я получаю эту ошибку ImportError: No module django при попытке выполнить строку use_library() ниже. Опять же, может кто-нибудь мне помочь? Я в тупике.google app engine (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. То, что я делал в конце, которое является грязным взломом, но работает, заключается в обновлении версии django в каталоге appengine до 1.1. Работал хорошо, нуждался в некоторой настройке между разработчиком и производителем. В частности, мне пришлось прокомментировать use_library('django', '1.1') при запуске локально, но включите его при загрузке моего приложения.

Я уверен, что есть лучшее решение, и я буду работать, когда улучшится мой Linux-опыт.

3

Придумал следующее решение:

Получить Джанго 1.1 и поместить его под корень проекта.

Добавить пустой файл "non_gae_indicator" в корневую папку проекта.

Добавить Джанго и 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') 

Вы должны запустить локальный сервер SDK с --allow_skipped_files флагом (или же пропущенные файлы будут отображаться не будут существовать при проверке их - серверная консоль дает предупреждение об этом).

Смежные вопросы