(更新:我做了一個更好的答案here我要刪除這個問題的一個更好的問題,但一些問題的答案可能有好處,未來的搜索。)需要打包的Jinja2模板蟒蛇
我的問題與this大致相同,但答案很難看(需要一個包括sharedtemplates/templates/templates/
的目錄結構),發佈時不完整(用戶「回答」他自己的問題),並假設我沒有的知識。
我正在處理我的第一個python支持的web應用程序。 javascript組件正在開發中使用靜態HTML頁面。現在我想要一個服務器端的python組件來處理AJAX調用並使用jinja2呈現HTML模板。
我以前用python成功了,用tkinter/requests創建GUI應用程序。愛語言,但python環境(環境?)令人困惑。我不是在virtualenv
工作。
根據jinja2 docs,HTML模板必須被稱爲包。然後創建一個PackageLoader
,知道包的名稱和模板目錄的Environment
:
from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('yourapplication', 'templates'))
所以,這裏是我的index.py(它只是一個短線甚至不嘗試呈現什麼,但是你至少可以知道它是否崩潰)。
#!/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>")
這裏的目錄結構:
index.py
mypkg/
mypkg/template/index.html
mypkg/__init__.py # empty
從錯誤日誌相關線路:
ImportError: No module named mypkg
也許我需要以不同的結構這一點,我敢肯定,我需要創建並調用setup.py
來安裝該模塊。這是其他答案遺漏的一部分:setup.py
中的內容以及它在這種情況下如何工作?我查看了setup.py
上的幾十個資源,它們都沒有涉及到安裝HTML模板的問題。
在此先感謝您的幫助!
更新:fragilewindows指向一個資源,講述「開發人員模式」,這可能是答案的一部分。這裏的困難在於,我正在考慮將此模板打包爲本地部署,而不是分發。但99%的在線文檔是關於PyPi的打包項目。我不需要打包一個「項目」,只是一個簡單的HTML模板。事實上,我需要打包模板的唯一原因是因爲這是jinja2
訪問模板的默認方式(並且我確實想在Python中本地化)。
我只需要說服安裝了「mypkg」的環境,並且「template」是安裝目錄中的一個目錄。你可以看到我迄今的努力是天真的;我期望正確的答案將相應地輕量級。
由於添加的PPUG確實有一個有益的啓示(開發模式)。但那些其他資源與我的問題無關。我正在開發此應用程序進行內部部署,而不是分發。 python包裝上的搜索結果前七頁主要涉及代碼的分發,這不是我的問題。我會相應地更新我的問題。 –