4

J'ai des problèmes avec l'importation correcte d'un module sur appengine. Mon application utilise généralement django avec app-engine-patch, mais cette partie est des files d'attente de tâches utilisant uniquement le framework webapp.Modification de Sys.path ou problème plus complexe?

J'ai besoin d'importer les paramètres django pour que l'application fonctionne correctement.

Mon script commence par:

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' 

Je reçois toujours cette erreur, ou quelque chose lié:

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

car le fichier settings.py commence par

from ragendja.settings_pre import * 

Je pense J'ai besoin d'ajouter ragendja à sys.path à nouveau mais j'ai eu plusieurs essais qui n'ont pas fonctionné.

Voici mon répertoire:

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

Est-ce seulement un problème de sys.path et comment ai-je besoin de le modifier avec la syntaxe correcte?

Merci

Répondre

3

manipule patch App Engine sys.path interne. Les tâches en arrière-plan ignorent ce code, votre chemin ne sera donc pas prêt pour les appels Django. Vous avez deux choix:

  • Corrigez les chemins manuellement. Le app engine documentation (voir la sous-section intitulée "Gestion de la manipulation du chemin d'importation") suggère de factoriser le code de manipulation de chemin dans un module qui peut être importé par votre script de tâche. Éliminer les dépendances sur le code django, si possible. Si vous pouvez écrire votre tâche pour être de purs appels python et/ou google api, vous êtes prêt à partir. Dans votre cas, cela peut signifier refactoriser votre code de paramètres.

+0

J'ai besoin de certains modèles django, donc je ne peux pas éliminer le code django. J'ai lu le premier point et la documentation google, mais cela n'aide pas vraiment. Pouvez-vous me dire plus? – user375348

0

Pourquoi ne pas:

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

depuis le ragendja est dans ce répertoire?

+0

Je l'ai essayé, mais ça ne marche pas. Je ne sais pas pourquoi – user375348

Questions connexes