记录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 @   东东欧尼酱  阅读(156)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示