记录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的目录拷贝到报错的位置,问题解决。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗