You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask蓝图打包为Setuptools包后静态文件缺失问题求助

问题解决方法

问题根源

  1. find_packages(where='src')仅识别包含__init__.py的Python包,你的templates目录无该文件,无法被当作包的一部分纳入安装。
  2. package_data的配置键必须是Python包名称(如updater.SWupdater),而非文件系统路径,你之前的路径格式完全错误。
  3. 启用include_package_data=True时,必须配合MANIFEST.in文件指定要包含的非Python文件,否则从GitHub源码直接安装时,setuptools不会自动捕获这些静态/模板文件。

具体解决步骤

1. 添加MANIFEST.in文件(核心)

在仓库根目录创建MANIFEST.in文件,明确指定要包含的模板和静态文件:

recursive-include src/updater/templates *.html
recursive-include src/updater/templates/static *.css *.js *.jpg

这个文件会告诉setuptools在源码安装阶段,强制将这些路径下的指定文件打包进安装包。

2. 可选:调整目录结构适配Flask规范(更稳妥)

将模板和静态文件移至蓝图对应的SWupdater包内,符合Flask蓝图的常规资源存放结构:

src
   updater
      SWupdater
          __init__.py  # 已有Python包标识文件
          templates
              SWupdater
                  *.html
          static
              js
                *.js
              css
                external_css
                     *.css
                *.css
              images
                *.jpg

此时修改setup.py的package_data配置为:

setuptools.setup(
    packages=setuptools.find_packages(where='src', exclude=["*.tests", "*.tests.*"]),
    package_dir={"updater": "src/updater"},
    zip_safe=False,
    include_package_data=True,
    package_data={
        "updater.SWupdater": [
            "templates/SWupdater/*.html",
            "static/css/*.css",
            "static/css/external_css/*.css",
            "static/js/*.js",
            "static/images/*.jpg"
        ]
    },
    install_requires=[],
    classifiers=[],
    python_requires='>=3.7'
)

3. 重新安装验证

将修改后的代码推送到GitHub,在虚拟环境中执行更新安装:

pip install --upgrade git+https://github.com/你的用户名/你的仓库名.git

安装完成后,可前往虚拟环境的site-packages/updater目录下,确认templates和static文件夹是否已被包含。

额外:Flask蓝图路径适配

如果调整了目录结构,初始化蓝图时需指定正确的资源路径:

from flask import Blueprint

bp = Blueprint(
    'swupdater',
    __name__,
    template_folder='templates',
    static_folder='static',
    static_url_path='/swupdater/static'
)

内容的提问来源于stack exchange,提问作者rafaelHTML

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:30:57