J'essaie de créer un modèle HTML dans Python en utilisant JINJA2. J'ai un dossier de modèles avec mon "template.html" mais je ne sais pas comment gérer les environnements ou les chargeurs d'emballages.
J'ai installé Jinja2 en utilisant easy_python et a exécuté le script suivant. P>
File "log_manipulationLL.py", line 291, in <module> env = Environment(loader=PackageLoader('yourapplication', 'templates')) File "/usr/local/lib/python2.7/dist-packages/Jinja2-2.6-py2.7.egg/jinja2/loaders.py", line 216, in __init__ provider = get_provider(package_name) File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 213, in get_provider __import__(moduleOrReq) ImportError: No module named yourapplication
4 Réponses :
Vous devez utiliser packageloader code> attend un module Python réel à l'aide de la syntaxe de points régulière. Par exemple, si votre structure ressemble à ceci:
myapp code> comme nom de module. P> p>
J'ai résolu ce problème à l'aide du code suivant: où ce code est dans le fichier Je suis Je ne sais pas si ma réponse est pertinente mais que je me demandais que quelqu'un peut peut-être trouver cette réponse utile. Si je me trompe, laissez-moi savoir. P> p> script name.py code>. p>
Appels de chargeur de paquets scriptname.py code>. Si vous initialisez le chargeur d'emballage là-bas, le code sera appelé une seconde fois.
Vous devez faire attention - si vous ne faites pas partie des fonctions / classes, la ré-importation du même fichier peut ré-exécuter le code à l'intérieur, ce qui entraîne une sortie à deux modèles!
Si vous ne voulez pas ou si vous n'avez pas besoin d'un package Python, vous devez probablement utiliser un FileSystemloader à la place, comme ceci:
from jinja2 import Environment, FileSystemLoader, select_autoescape env = Environment( loader=FileSystemLoader('file/path/'), autoescape=select_autoescape(['html', 'xml']), )
Packageloader est défini comme ceci:
PackageLoader('templates', '').list_templates()