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

PyInstaller打包Django+React应用遇djoser元数据缺失错误求助

解决PyInstaller打包Django应用时的djoser元数据缺失问题

问题分析

该错误源于PyInstaller打包过程中未正确收集djoser的包元数据,而djoser的__init__.py通过importlib.metadata.version('djoser')获取版本信息,打包后找不到对应元数据文件触发报错。

可行解决方案

方案1:临时绕过元数据查找逻辑

找到虚拟环境中djoser的__init__.py文件(路径示例:venv/lib/pythonX.X/site-packages/djoser/__init__.py),将版本获取代码替换为硬编码版本号:

# 原代码
__version__ = importlib.metadata.version("djoser")
# 替换为(替换为你实际安装的djoser版本,比如2.2.0)
__version__ = "2.2.0"

修改完成后重新执行PyInstaller打包命令即可。

方案2:手动配置spec文件收集元数据

  1. 生成PyInstaller的spec配置文件:
pyi-makespec manage.py
  1. 打开生成的manage.spec,在datas列表中添加djoser的dist-info文件夹路径(替换为你环境中的实际路径):
datas = [
    # 保留原有配置,新增以下行
    ('venv/lib/python3.9/site-packages/djoser-2.2.0.dist-info', 'djoser-2.2.0.dist-info'),
]
  1. 基于spec文件重新打包:
pyinstaller manage.spec

方案3:更换打包工具

如果PyInstaller的适配问题难以解决,可尝试以下替代工具:

  • Nuitka:将Python代码编译为C级可执行文件,依赖处理更彻底,打包命令示例:
nuitka --standalone --follow-imports manage.py
  • cx_Freeze:通过配置文件明确指定需包含的包与元数据,对Django框架适配性较好。

额外提示

  • 打包前确保在虚拟环境中安装所有依赖,避免使用全局Python环境导致依赖缺失。
  • React部分建议先打包为静态文件,放入Django的静态资源目录,这样打包后的桌面应用可直接加载静态资源,无需单独启动React服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:20:16