zu verpacken (UPDATE: Ich habe eine bessere Frage mit einer besseren Antwort gemacht here Ich wollte diese Frage löschen, aber einige der Antworten könnten auf künftige Forscher nützlich erweisen..)brauchen jinja2 Vorlage für Python
Meine Frage ist fast identisch mit this, aber diese Antwort ist hässlich (erfordert eine Verzeichnisstruktur einschließlich sharedtemplates/templates/templates/
), unvollständig wie gepostet (Benutzer "beantwortet" seine eigene Frage), und übernimmt einige Kenntnisse, die ich nicht habe.
Ich arbeite an meiner ersten Python-Backed-Web-Anwendung. Die JavaScript-Komponente wird gerade mit einer statischen HTML-Seite entwickelt. Jetzt möchte ich eine serverseitige Python-Komponente, die AJAX-Aufrufe verarbeitet und eine HTML-Vorlage mit jinja2 rendert.
Ich hatte Erfolg mit Python zuvor, Erstellen von GUI-Anwendungen mit tkinter/Anfragen. Liebe die Sprache, aber die Python-Umgebung (Umgebungen?) Ist verwirrend. Ich arbeite nicht in einem virtualenv
.
Nach jinja2 docs müssen HTML-Templates in etwas sein, das als Paket bezeichnet wird. Dann sind Sie ein Environment
mit einem PackageLoader
erstellen, die den Namen des Pakets kennt und die Vorlage dir:
from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('yourapplication', 'templates'))
So, hier ist mein index.py (es ist nur ein Stummel und versucht nicht einmal etwas zu machen, aber Sie können zumindest sagen, ob es abstürzt).
#!/usr/bin/python
from jinja2 import Environment, PackageLoader # no prob, jinja2 correctly installed using pip
env = Environment(loader=PackageLoader('mypkg', 'template')) # causes server error
# if it doesn't crash, just put up a basic html page for now
print ("Content-type: text/html\r\n\r\n")
print("<html><head><title>hello</title></head><body>hello wuld</body></html>")
Hier ist die Verzeichnisstruktur:
index.py
mypkg/
mypkg/template/index.html
mypkg/__init__.py # empty
Relevante Linie von Fehlerprotokoll:
ImportError: No module named mypkg
dies vielleicht anders Ich brauche zu strukturieren, und ich bin mir ziemlich sicher, dass ich brauche um ein setup.py
zu erstellen und aufzurufen, um das Modul zu installieren. Das ist ein Teil dessen, was die andere Antwort ausgelassen hat: Was ist in setup.py
und wie funktioniert es in diesem Fall? Ich habe Dutzende von Ressourcen auf setup.py
angeschaut und keiner von ihnen scheint sich auf die Frage der Installation von HTML-Templates zu beziehen.
Vielen Dank im Voraus für Ihre Hilfe!
UPDATE: fragilewindows zeigte auf eine Ressource, die über "Entwicklermodus" berichtet, was wahrscheinlich ein Teil der Antwort ist. Die Schwierigkeit hier besteht darin, diese Vorlage für die lokale Bereitstellung und nicht für die Verteilung zu paketieren. In 99% der Online-Dokumentation geht es jedoch um Verpackungsprojekte für PyPi. Ich muss kein "Projekt" packen, nur ein einfaches HTML-Template. In der Tat, der einzige Grund, warum ich die Vorlage packen muss, ist, weil das die Standardmethode für jinja2
ist, um auf Vorlagen zuzugreifen (und ich möchte in Python nativ werden).
Ich muss nur die Umgebung davon überzeugen, dass "mypkg" installiert ist, und dass "Vorlage" ein Verzeichnis innerhalb der Installation ist. Sie können sehen, dass meine bisherigen Bemühungen naiv sind; Ich erwarte, dass die richtige Antwort entsprechend leicht ist.
Dank, hat die PPUG haben einen nützlichen Einblick (Development Mode). Aber diese anderen Ressourcen sind für mein Problem ziemlich irrelevant. Ich entwickle diese Anwendung für die interne Bereitstellung und nicht für die Verteilung. Die ersten sieben Seiten der Suchergebnisse auf Python-Verpackungen sind stark auf die Codeverteilung ausgerichtet, was nicht mein Problem ist. Ich werde meine Frage entsprechend aktualisieren. –