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