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

Pyinstaller打包Django REST Framework应用缺失模板,可浏览API报错

这个问题我之前帮朋友解决过,确实是PyInstaller打包Django+DRF时的常见坑——API接口能正常调用,但DRF自带的可浏览API页面因为找不到模板报错,本质就是PyInstaller没把DRF的UI模板文件打包进去。下面给你几种靠谱的解决办法:

解决方法一:打包时用--add-data参数手动指定模板路径

首先你得找到DRF模板所在的位置,打开Python终端运行这段代码就能拿到:

import rest_framework
print(rest_framework.__path__)

输出的路径类似['C:\\your_venv\\Lib\\site-packages\\rest_framework'],后面加上/templates就是模板文件夹的完整路径。

然后用PyInstaller打包时加上--add-data参数,Windows系统用分号分隔源路径和目标路径,Linux/macOS用冒号:

# Windows示例
pyinstaller --add-data "C:\\your_venv\\Lib\\site-packages\\rest_framework\\templates;rest_framework/templates" manage.py
# Linux/macOS示例
pyinstaller --add-data "/your_venv/lib/python3.x/site-packages/rest_framework/templates:rest_framework/templates" manage.py

这个参数的作用是把DRF的模板文件夹复制到打包后的dist/app/rest_framework/templates目录下,让Django能找到它们。

解决方法二:通过修改spec文件配置(更适合复杂项目)

如果你的打包需求比较复杂,用spec文件会更灵活。首先生成spec文件:

pyinstaller --name=your_app_name manage.py

然后打开生成的your_app_name.spec文件,找到datas列表,把DRF模板的路径添加进去:

datas = [
    # 这里可以加你项目自己的静态文件、模板等
    ('C:\\your_venv\\Lib\\site-packages\\rest_framework\\templates', 'rest_framework/templates'),
]

保存后用spec文件重新打包:

pyinstaller your_app_name.spec
额外注意点
  • 确保你的Django项目settings.py里的INSTALLED_APPS已经包含'rest_framework',这个你应该已经加了,不然API也没法正常运行
  • 如果还有其他第三方库的模板或静态文件需要打包,都可以用同样的方法添加到--add-data或者spec的datas里

这样应该就能解决TemplateDoesNotExist的问题,打开可浏览API页面就能正常显示了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 13:27:53