记录pyinstaller打包django项目遇到的坑

由于工作需要,需要在内网部署一个Django项目生成exe,打包过程遇到了不少坑,在此记录一下。

一、安装pyinstaller

略。

二、打包exe

第一个问题:用pyinstaller -F -w生成的exe报错

一开始用的是以下命令生成exe:

pyinstaller -F -w xx.py

导出完毕后,在dist/manage/目录下输入

manage.exe runserver

尝试运行,报错:

RuntimeError: Script runserver does not exist.
[9392] Failed to execute script 'manage' due to unhandled exception!

解决方式是在后面追加--noreload,即

manage.exe runserver --noreload

该问题解决

第二个问题:服务启动时又报另一个错:

No module named XXX

这是因为pyinstaller打包时不会将所有的模块一并打包,会有遗漏。解决方式有两种,一种是在生成exe的时候在后面追加--hidden_import,这种方法有点麻烦,所以我用了第二种方法,先生成spec文件:

pyi-makespec -D xx.py

运行后在项目目录下出现xx.spec文件,然后在xx.spec里面修改hidden_import字段:

hiddenimports=["generate.apps", "openpyxl.cell._writer"]

修改后用下面的命令生成exe:

pyinstaller manage.spec

 该问题解决

第三个问题:打开网页就会报TemplateDoesNotExist,找不到页面

解决方式是把templates和static这两个存html和css的目录拷贝到报错的位置,问题解决。

 

posted @ 2024-06-20 16:40  东东欧尼酱  阅读(81)  评论(0编辑  收藏  举报