22、打包django项目成exe文件
pyinstaller打包django项目成exe文件
环境: linux
可选参数
示例
说明
-F
pyinstaller -F demo.py
只在dist文件夹中生成一个程序demo.exe文件,适用于一个模块没有多依赖.py文件
-D
pyinstaller -D demo.py
默认选项,除了主程序demo.exe外,还会在在dist文件夹中生成很多依赖文件,推荐使用这个
-c
pyinstaller -c demo.py
默认选项,只对windows有效,使用控制台
-w
pyinstaller -w demo.py
只对windows有效,不使用控制台
-p
pyinstaller -p D:\project\demo.py
设置导入路径
-i
pyinstaller -i D:\demo.ico demo.py
给生成的demo.exe文件设置一个自定义的图标
第一步 安装PyInstaller
pip install pyinstaller
注意: 如果你的python3 是编译安装的, 编译时参数没指定 --enable-shared , 则无法使用,需要重新编译,带上这个参数;
第二步 制作项目的.spec文件
pyi-makespec -D manage.py
第三步 生产exe文件
pyinstaller manage.spec
# 会生成dist/manage , 所有依赖会统统打包到这个目录:
运行
./manage runserver 0.0.0.0:8000
打包遇到的问题
问题1: 运行服务是会提示No module named XXX
# 这是因为Django有些module不会自动收集,需要手动添加
# 解决方法:在manage.spec文件中修改
hiddenimports=[]
为
hiddenimports=["Django","xlwt","pytz","wheel","att.apps"],
# 提示缺少什么module就在此处添加什么。
问题2:打开网页出现TemplateDoesNotExist 错误
解决方法:根据错误的提示消息,把项目中的模板文件templates拷贝到相应的位置,刷新页面即可。
问题3:网页丢失CSS、JS
# settings.py 文件内添加
STATIC_ROOT = os.path.join(BASE_DIR, 'static', 'static_root')
# 终端执行,将静态文件收录到 static_root 中
python manage.py collectstatic
# urls.py 添加代码
from django.conf.urls import static
from 项目名 import settings
urlpatterns += static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Last updated