需求:将一个使用django框架写的web项目打包成exe文件
一、安装打包工具pyinstaller
安装命令: pip install pyinstaller
二、输入命令 pyinstaller manage.py
等待打包.....
打包过程出错,可能是代码存在逻辑bug,与打包过程无关。
打包结束后:项目目录会出现dist文件夹如图所示:
红线标注的不会生成,后续会讲。这里提示一下:打包前请检查settings中的配置,特别是数据库连接。
三、运行打包好的exe
进入打包好的dist文件夹,进入manage文件夹下:
右键进入命令窗口,输入 .\manage.exe runserver 127.0.0.1:8000 --noreload
这个时候你以为万事大吉了,大错特错,不出意外的话,你将出现model缺失的错误。
不要慌,将出现缺失的model复制到:我缺失的model为:
'server.apps','server.middleware','server.middleware.auth'
这个文件会在你打包成功之后会生成,在根目录下。
将缺失的model添加到指定位置后,打开终端输入:pyinstaller manage.spec
再次打包,结束之后,同样步骤运行项目(头疼的是一次仅能发现一个缺失的model)
四、可能存在的问题
1.项目成功运行之后,根据自己设置的路径和端口访问,如果出现数据库丢失等问题。例如:
将本地数据库放到manage文件夹下,就像我上面放的一样。
2.模板找不到,意思就是静态文件无法找到。例如这样:
首先设置settings
其次将模板文件,templates,static文件夹复制到/dist/manage/internal(正常情况是manage下就可以,但是我打包出来多了一个internal文件夹,该文件夹下才打包好的文件)
注意在该文件夹下创建一个与你app同名字的文件夹,例如我的app为server,所以我创建了server文件夹,将static和templates复制进去。
重启项目,如果代码没有问题的话,就基本没什么问题了,然后就可以在没有python环境的其他windows系统电脑上跑了