1、pyinstaller

pip install pyinstaller

/2制作项目的.spec文件
进入django项目所在路径,运行

pyi-makespec -D manage.py

在路径下,生成一个.spec文件
3、以文本的方式打开.spec文件,spec文件格式如下。具体spec的使用,可以查看官网
https://pyinstaller.readthedocs.io/en/stable/spec-files.html

4、不修改.spec文件,直接运行以下语句

pyinstaller manage.spec

我们可以发现能够打包成功,但是在manage.exe所在路径下,在cmd中运行manage.exe runserver,会发现以下错误:
ImportError: No module named admin
这种错误的原因是 django.contrib.admin在django项目中是隐式导入的,所以pyinstaller打包时,并不能识别这种库或者模块,导致打包出来的.exe中并不包括这样隐式导入的库。
如果碰到这样的错误,只需要将这个库添加到.spec文件中的hiddenimports中即可。在接下来打包django项目缺少很多这样的隐式库,所以我.spec文件中一并修改了,修改如下:(如果缺少什么,直接在hiddenimports中加就可以了)

注:这里有个坑,特别需要关注
如果打包好的.exe运行后,报错ImportError: No module named apps,当你在hiddenimports中加入了’django.contrib.admin.apps’,结果还是报同样的错误。这是因为添加的apps模块不完整,要在hiddenimports中加入以下全部的apps模块:(这些apps在django项目中的settings.py文件中可以全部找到,照着添加就可以了,另处还有context_processors模块,middleware模块也需要注意)
‘django.contrib.admin.apps’,‘django.contrib.auth.apps’,‘django.contrib.contenttypes.apps’,
‘django.contrib.sessions.apps’, ‘django.contrib.messages.apps’, ‘django.contrib.staticfiles.apps’,

5、以上hiddenimports弄好后,运行后会出现以下的错误
TemplateDoesNotExist 这个是因为没有找到templates文件.

可以根据错误提示将templates文件添加至对应的路径下,刷新即可。其中front是我工程下一个放所有前端东西的文件,templates是用来放html的一个文件夹。(所以具体的添加要根据错误提示是在哪里找不到就添加至哪里)

6、在第五步后,可以发现页面已经出来,但是发现页面没有css和js了
这是因为Pyinstaller 能找到templates(html files文件),但不能找到css和js文件。
我的解决方案是参考了以下 :https://github.com/pyinstaller/pyinstaller/issues/2368
我的具体操作是在django项目的settirngs.py文件中加入

STATIC_ROOT = os.path.join(BASE_DIR, 'front', 'static_root')

其中front是我的文件夹,static_root是我在front下创建的一个空子文件,用来收集工程中所有的静态文件。
在django项目路径下执行manage.py collectstatic会自动地将STATICFILES_DIRS列出的目录以及各个App下的static子目录的所有文件复制到STATIC_ROOT。因为复制过程可能会覆盖掉原来的文件,所以,一定不能把我们辛苦做出来静态文件放这边!
然后来到urls.py文件下,加入下面的一句话,加入的同时要导入static库

from django.conf.urls import static
urlpatterns += static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

这句话的意思就是将STATIC_ROOT目录的静态文件复制一份到网页 STATIC_URL路径下

最后我们还需要将STATIC_ROOT中的静态文件打包到.exe中。这一步是在.spec文件中的datas中加入下面一个元组

datas=[(r'E:\G48\G48\front\static_root',r'.\front\static_root'), (r'E:\G48\G48\front\templates', r'.\front\templates')],

考虑到第5步,再这里我也直接将templates文件打包到了对应的文件。所以第五步就不用自己再复制templates文件到指定的文件夹了。
最后.spec文件看起来如下:

一切准备好后,执行下面语句就OK

pyinstaller manage.spec

7、如果在项目中有多进程,可以参考以下
https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessinghttps://stackoverflow.com/questions/24944558/pyinstaller-built-windows-exe-fails-with-multiprocessing
————————————————

原文链接:https://blog.csdn.net/qq_34809033/article/details/81873896

使用pyinstaller打包django项目相关推荐

  1. Pyinstaller打包Django项目

    1. 安装pyinstaller pip install pyinstaller 2. 介 绍 PyInstaller读取您编写的 Python 脚本.它会分析您的代码以发现您的脚本需要执行的所有其他 ...

  2. 使用pyinstaller打包python_使用pyinstaller打包Python项目,python

    00 前言 上一篇文章写的是使用百度aip实现一个图片转文字的小工具( https://blog.csdn.net/George_Clancy/article/details/105551872 ), ...

  3. Pyinstaller 打包 Pytest项目及资源文件

    目录 前言 纯Python代码的打包 包含其他文件的打包 总结 前言 相比于cx-freeze和Nuitka,还是pyinstaller好用些,因此使用pyinstaller来生成独立的exe文件以供 ...

  4. 用Pyinstaller打包Scrapy项目问题解决!!!

    这篇报废,这里的PyInstaller教程相信对大家会有用,其中会解决spider not found的问题,真正成功地打包Scrapy:https://blog.csdn.net/La_vie_es ...

  5. pyinstaller 打包 python3项目,遇到failed to execute script XXX 错误的解决方法

    近日修改了之前一个使用pyinstaller可以成功打包的python3项目,在IDE中运行正常,但是打包以后运行exe却出现failed to execute script XXX 弹窗提示,无法正 ...

  6. python使用Pyinstaller打包整个项目

    今天真的被Pyinstaller给坑到了!!! 本文利用spec文件进行对整个项目进行打包,直接输入命令打包也可以,但会出现比较多的问题. 1 .安装Pyinstaller pip install p ...

  7. 【Python】Python项目打包发布(一)(基于Pyinstaller打包多目录项目)

    Python项目打包发布汇总 [Python]Python项目打包发布(一)(基于Pyinstaller打包多目录项目) [Python]Python项目打包发布(二)(基于Pyinstaller打包 ...

  8. 利用pyinstaller将python项目脚本打包成可执行文件

    利用pyinstaller打包python项目 由于本文讲述还算比较详细,如果对pyinstaller有一定的了解,只需快速上手,可以直接跳到第四章结合实例进行操作. 1简介及安装pyinstalle ...

  9. pyinstaller打包原理,常见问题。

    如果将Python代码使用pyinstaller打包成exe文件时,只有一个大的exe文件,很多人可能遇到,在本机上就已经不能运行了,有的情况好些,在本机可以运行,发给别人就无法正常运行.本文本就是分 ...

最新文章

  1. 西安java招聘_西安招聘 | 陕西安控科技公司招聘(员工宿舍、节日福利、餐补)...
  2. angular2 学习笔记 ( Http 请求)
  3. 鸿蒙心理测评中心,深度*行业*计算机行业:鸿蒙帆起 国产软硬件风已来
  4. 文件格式和扩展名不匹配.文件可能已损坏_自媒体良器:音频文件批处理,FFmpeg一行搞定!果断收藏...
  5. 不只是用于研究:使用Nvivo获取各种定性数据
  6. 51单片机auxr寄存器_STC12C5A60S2单片机AD采样程序及其寄存器讲解
  7. 使用CMake编译freeglut-3.0.0的静态库
  8. MVC Scaffolding SmartCode-Engine 更新
  9. 入门K8s:一键脚本搭建Linux服务器集群
  10. LeetCode算法入门- Search Insert Position -day19
  11. 什么是Java中的原子操作( atomic operations)
  12. iOS开发之runtime的运用-获取当前网络状态
  13. IBM ServerGuide 8.42
  14. python中返回上一步操作_返回上一步的快捷键-百度经验
  15. 单片机数字电路-protues之74HC573演示
  16. 我的开源.NET函数式编程类库——VBF 1.0 BETA1发布
  17. 利用计算机对信息加工的步骤,计算机是通过______的存储程序来______完成数据的加工处理。...
  18. 常见网络安全产品汇总(私信发送思维导图)
  19. Quantopian 入门系列二 - 流水线 (上)
  20. 【论文阅读】DeepGauge: multi-granularity testing criteria for deep learning systems.

热门文章

  1. php使用curl请求后台接口
  2. 常用的Essay写作句型怎么详细分析?
  3. GPS项目实战系列1:GPS数据解析1
  4. turnserver (coturn + redis) 配置ICE server 临时用户密码【实践】
  5. xss漏洞扫描器开发随想
  6. 北京理工大学丢身份证之后的办法
  7. 传感器阵列波束优化设计与应用_传感器阵列波束优化设计及应用
  8. java 数据库 异常类型_Java基础 -- 常见异常
  9. GraphPad Prism 9.5.1 医学绘图分析安装使用教程
  10. 易思企业网站管理系统ESPCMS去前台版权