Django5 使用pyinstaller打包成 exe服务

首先:确保当前的django项目可以完美运行,再进行后续操作

python 复制代码
python manage.py runserver

第一步 安装 pyinstaller

python 复制代码
pip install pyinstaller

第二步 创建spec 文件

python 复制代码
pyinstaller --name manage --onefile manage.py
  • pyinstaller:这是调用 PyInstaller 的命令,用来将 Python 文件打包为可执行文件。
  • --name manage:指定生成的可执行文件的名称为 manage。如果没有这个参数,默认生成的可执行文件名与原始 Python 文件(manage.py)相同。
  • --onefile:将所有依赖库和文件打包成一个单独的可执行文件。如果不使用这个参数,生成的文件会包含多个文件(如依赖库、资源文件等)。
  • manage.py:这是要打包的 Python 脚本文件。

生成下列文件,如图:

第三步 修改生成的spec文件

1、添加Django的相关依赖

python 复制代码
hiddenimports=['django.core.management.commands.runserver'],
  • hiddenimports:是Pyinstaller 配置中的一个选项,在spec文件中配置,用来显示指定一些Pyinstaller 可能无法检测到的隐藏依赖项。
  • django.core.management.commands.runserver:Django 的 runserver 命令模块,负责启动开发服务器。在打包时,PyInstaller 可能无法检测到这个模块的使用,所以需要显式包含。

2、将模板和静态文件 路径也添加进去

python 复制代码
datas=[('templates', 'templates')],
  • datas :这是 PyInstaller spec 文件中的一个选项,用来指定需要打包到应用中的非 Python 文件,比如模板、静态资源、配置文件等。默认情况下,PyInstaller 只会打包 Python 文件及其依赖,但应用通常还需要其他文件才能正确运行,特别是像 Django 这样的框架,通常有 HTML 模板等资源。

  • ('templates', 'templates')

    • 左边的 templates :这是源文件的路径(相对于当前项目)。它表示你想打包的文件夹或文件的位置。在这个例子中,templates 目录包含你的 Django 项目的 HTML 模板文件。
    • 右边的 templates :这是目标路径,表示打包后的可执行文件解压后,这些文件会放到应用中的哪个位置。在这个例子中,打包后的 templates 目录会被保存在与源代码相同的相对位置。

第四步 禁用自动重载功能

python 复制代码
if __name__ == "__main__":
    from django.core.management import execute_from_command_line
    import sys

    # 检查是否是 runserver 命令并禁用自动重载
    if len(sys.argv) > 1 and sys.argv[1] == 'runserver':
        sys.argv.append('--noreload')

    execute_from_command_line(sys.argv)

第五步 收集Django项目依赖的静态文件

确保 setting.py 文件中正确设置了STATIC_ROOT

powershell 复制代码
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
STATIC_ROOT = BASE_DIR /"dist"/"staticfiles"

执行下列脚本

powershell 复制代码
python manage.py collectstatic
  • 这个命令会将项目中所有的静态文件(如 CSS、Javascript,图片等)从各个应用的static目录复制到一个指定目录(通常称为 静态文件目录static root)。
  • 注意:不包括 HTML 模板文件。HTML 模板文件通常不被认为是静态文件,因为它们是在服务器端处理后动态生成的。

第六步 根据修改后的spec文件,重新打包项目

powershell 复制代码
pyinstaller --clean manage.spec

第七步 测试exe 文件是否正常运行

进入 dist目录 cd dist,运行下列命令即可:

powershell 复制代码
mange.exe runserver

注意:如果你的Django 项目使用SQLlite ,数据库文件会被直接打包。

相关推荐
清水白石00839 分钟前
《Python × 数据库:用 SQLAlchemy 解锁高效 ORM 编程的艺术》
开发语言·python·json
星依网络1 小时前
使用LabelImg工具标注数据(游戏辅助脚本开发)
python·游戏引擎·图形渲染·骨骼绑定
站大爷IP1 小时前
Appium实现Android应用数据爬取:从环境搭建到实战优化
python
IT老兵20251 小时前
PyTorch DDP多GPU训练实践问题总结
人工智能·pytorch·python·分布式训练·ddp
9527(●—●)2 小时前
windows系统python开发pip命令使用(菜鸟学习)
开发语言·windows·python·学习·pip
森叶2 小时前
手搓一个 Windows 注册表清理器:从开发到 EXE 打包全流程
windows·python
骚戴2 小时前
大语言模型(LLM)进阶:从闭源大模型 API 到开源大模型本地部署,四种接入路径全解析
java·人工智能·python·语言模型·自然语言处理·llm·开源大模型
柒壹漆2 小时前
用Python制作一个USB Hid设备数据收发测试工具
开发语言·git·python
东哥很忙XH2 小时前
python使用PyQt5开发桌面端串口通信
开发语言·驱动开发·python·qt
Dxy12393102163 小时前
Python的正则表达式入门:从小白到能手
服务器·python·正则表达式