<p>我不相信这个问题是<a href="https://stackoverflow.com/a/35816876/2741329">https://stackoverflow.com/a/35816876/2741329</a>中所描述的。我刚刚能够用<code>Jinja2</code>冻结一个应用程序。在</p>
<p>在我的spec文件中,我使用以下方法收集所有模板:</p>
<pre><code>from PyInstaller.building.build_main import Analysis, PYZ, EXE, COLLECT, BUNDLE, TOC
def collect_pkg_data(package, include_py_files=False, subdir=None):
import os
from PyInstaller.utils.hooks import get_package_paths, remove_prefix, PY_IGNORE_EXTENSIONS
# Accept only strings as packages.
if type(package) is not str:
raise ValueError
pkg_base, pkg_dir = get_package_paths(package)
if subdir:
pkg_dir = os.path.join(pkg_dir, subdir)
# Walk through all file in the given package, looking for data files.
data_toc = TOC()
for dir_path, dir_names, files in os.walk(pkg_dir):
for f in files:
extension = os.path.splitext(f)[1]
if include_py_files or (extension not in PY_IGNORE_EXTENSIONS):
source_file = os.path.join(dir_path, f)
dest_folder = remove_prefix(dir_path, os.path.dirname(pkg_base) + os.sep)
dest_file = os.path.join(dest_folder, f)
data_toc.append((dest_file, source_file, 'DATA'))
return data_toc
pkg_data = collect_pkg_data('<YOUR LIB HERE>')
</code></pre>
<p>然后将<code>pkg_data</code>添加到<code>COLLECT</code>(1-文件夹)或<code>EXE</code>(1文件).spec</p>
<p>在单文件夹解决方案中,您应该能够在创建的子文件夹中找到所有模板。在</p>
<hr/>
<p><strong>编辑</strong></p>
<p>这可能有用(假设您有一个包(即,您有一个<code>__init__.py</code>),遵循以下建议:<a href="http://flask.pocoo.org/docs/0.10/patterns/packages/" rel="noreferrer">http://flask.pocoo.org/docs/0.10/patterns/packages/</a>):</p>
^{pr2}$