pyinstall 打包Django程序
pyinstall 打包Django程序
基本流程
安装pyinstaller
pip install pyinstaller
生成.spec文件
在编辑器的虚拟环境中执行如下命令:
pyi-makespec -D manage.py
编辑manage.spec文件
在a = Analysis()的hiddenimports=[]列表中添加如下文件:
INSTALLED_APPS
所有应用MIDDLEWARE
中所有中间件urls.py
中的所有url引用包TEMPLATES
中libraries
下的所有包
生成.exe文件
执行如下命令,生成mannage.exe文件
pyinstaller manage.spec
模板文件和静态文件
复制模板templates文件夹和static文件夹到_internal
如果有其他外部文件也需要手工复制
运行命令
manage.exe runserver 0.0.0.0:8080 --noreload
说明:一定需要加上--noreload
常见错误
-
TypeError: expected str, bytes or os.PathLike object, not NoneType
原因是不是每个应用中都有
__init__.py
文件,需要检查所有应用,添加上改文件,内容为空。 -
启动服务时提示 No module named XXX
需要配置.spec文件项目中的对应项目需要写入hiddenimports里面,提示缺少什么,添加上该模块,然后重新打包
-
RuntimeError: Script runserver does not exist.
解决办法:只需在命令末尾加上
--noreload
即可