gpt4 book ai didi

python - 无法在从 python 模块创建的 pip 包中使用 jinja2 模板

转载 作者:太空宇宙 更新时间:2023-11-03 14:59:09 25 4
gpt4 key购买 nike

我有一个具有以下目录结构的 python 项目

foo
|--MANIFEST.in
|--requirements.txt
|--setup.py
|--foo.py
|--templates/
|--bar.tmpl

其中 setup.py 是一个 python 脚本。以前,我使用安装脚本将脚本符号链接(symbolic link)到我用户的私有(private) bin(并成功使用它),但决定将其打包(第一次这样做)。我能够使用 $ pip install . 从项目的根目录成功地将包安装在 virutalenv 中,并且我能够执行大部分脚本,直到我使用 jinja2 生成模板。好像 templates 目录没有与包的其余部分一起安装,或者我的脚本没有正确找到 templates 目录的路径。

摘自foo.py:

from jinja2 import Environment, ModuleLoader

def generate_readme(template_file):
template_env = Environment(loader=PackageLoader('foo','templates'))
template = template_env.get_template(template_file)
template_vars = {"title": get_title()}
output = template.render(template_vars)
return output

注意:'bar.tmpl' 作为template_file

传递给此函数

摘自setup.py:

from setuptools import setup

setup(name='foo',
py_modules=['foo'],
entry_points={'console_scripts': ['foo = foo:foo']}
include_package_data=True,
zip_safe=False)

MANIFEST.in 的内容:

include templates/*

相关回溯:

  File "/home/username/.virtualenvs/foo/local/lib/python2.7/site-packages/foo.py", line 30, in generate_readme
template = template_env.get_template(template_file)
File "/home/username/.virtualenvs/foo/local/lib/python2.7/site-packages/jinja2/environment.py", line 812, in get_template
return self._load_template(name, self.make_globals(globals))
File "/home/username/.virtualenvs/foo/local/lib/python2.7/site-packages/jinja2/environment.py", line 774, in _load_template
cache_key = self.loader.get_source(self, name)[1]
File "/home/username/.virtualenvs/foo/local/lib/python2.7/site-packages/jinja2/loaders.py", line 235, in get_source
raise TemplateNotFound(template)
jinja2.exceptions.TemplateNotFound: bar.tmpl

我花了几个小时谷歌搜索、阅读类似的 stackoverflow 线程、阅读 jinja 和 setuptools 文档以及阅读类似的代码。我测试过的所有内容都导致相同的错误消息,我有 pip 不知所措。非常感谢任何帮助。

最佳答案

MANIFEST.in 告诉源代码分发中要包含哪些文件,即 python setup.py sdist,但它不会直接影响安装的文件,因为 pip install 。 只是调用 setuptools,不对 package_data 做任何特殊的事情。

您需要将这些文件作为包数据或附加文件包含在 setup.py 文件中。

参见 https://docs.python.org/2/distutils/setupscript.html详情请关注页面的data_filespackage_data

关于python - 无法在从 python 模块创建的 pip 包中使用 jinja2 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39887573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com