(更新:我做了一个更好的答案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包装上的搜索结果前七页主要涉及代码的分发,这不是我的问题。我会相应地更新我的问题。 –