2010-04-02 9 views
2

J'essaie donc d'utiliser le moteur de gabarit django 1.1 avec le framework d'application web google app engine, de here. C'est sur Ubuntu Jaunty, je me suis assuré que le PYTHONPATH contient l'emplacement de Django-1.1.1 mais je reçois l'erreur 'ImportError: No module named django' quand il essaie d'exécuter la ligne use_library() ci-dessous. Encore une fois, quelqu'un pourrait-il m'aider? Je suis perplexe.google app engine (python): ImportError aucun module nommé django

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

Répondre

0

@stallarida - Le problème est que .96 est livré par défaut avec le SDK. Ce que j'ai fait à la fin, qui est un hack sale mais fonctionne, est de mettre à jour la version de django dans le répertoire appengine à 1.1. Bien travaillé, il a fallu un peu de peaufinage entre le dev et la production. Plus précisément, je devais commenter use_library('django', '1.1') lors de l'exécution locale, mais incluez-le lors du téléchargement de mon application.

Je suis sûr qu'il y a une meilleure solution et je vais travailler quand mon expérience de linux s'améliorera.

3

est venu avec la solution suivante:

Get django 1.1 et le mettre sous la racine de votre projet. Ajoutez un fichier vide "non_gae_indicator" à votre dossier racine du projet.

Ajouter django et non_gae_indicator à votre app.yaml élément skip_files:

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

Maintenant, nous avons un moyen de dire si nous courons sous la GAE-sdk ou de vivre - depuis non_gae_indicator ne sera pas disponible lorsque nous sommes vivre.

Donc main.py vous pouvez faire:

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') 

Vous devez exécuter votre serveur SDK local avec le drapeau --allow_skipped_files (ou bien les fichiers ignorés apparaîtront à ne pas être exister lorsque les vérifier - la console du serveur donne un avertissement à ce sujet).

Questions connexes