iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >pyinstaller打包django项目的实现步骤
  • 810
分享到

pyinstaller打包django项目的实现步骤

2024-04-02 19:04:59 810人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

安装pyinstaller pip install pyinstaller 制作项目的.spec文件   进入Django项目所在路径,运行 pyi-makes

安装pyinstaller


pip install pyinstaller

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


pyi-makespec -D manage.py

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


 不修改.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',

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


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

在第五步后,可以发现页面已经出来,但是发现页面没有CSSjs
这是因为Pyinstaller 能找到templates(html files文件),但不能找到css和js文件。

我的具体操作是在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

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

到此这篇关于pyinstaller打包django项目的实现步骤的文章就介绍到这了,更多相关pyinstaller打包django内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: pyinstaller打包django项目的实现步骤

本文链接: https://www.lsjlt.com/news/137225.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • pyinstaller打包django项目的实现步骤
    安装pyinstaller pip install pyinstaller 制作项目的.spec文件   进入django项目所在路径,运行 pyi-makes...
    99+
    2022-11-12
  • Qt项目打包的实现步骤
    目录准备项目文件用InstallShield解决打包后自动启动cmd窗口的问题准备项目文件 本质上就是把依赖的动态库放到你指定的文件夹里面去;这样在其他电脑上运行时,就不需要再安装q...
    99+
    2022-11-13
  • 使用eclipse打包Maven项目的实现步骤
    Maven中最重要的是POM文件,其打包也是基于该文件的,在POM文件中配置插件,可以实现将Maven项目打包成可执行jar包 依赖如下: <build> <p...
    99+
    2022-11-13
  • Vue项目打包部署到GitHubPages的实现步骤
    目录前言前期准备重要说明步骤1步骤2步骤3步骤4步骤5步骤6前言 关于什么是github pages?怎样创建github 仓库上传本地项目到GitHub远程仓库?等基本操作本文不再...
    99+
    2022-11-13
  • vue项目打包部署跨域的实现步骤
    目录1.前端工程解决办法1.1开发时候解决办法1.2打包部署后解决办法2.后端工程解决办法跨源资源共享(CORS,或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过...
    99+
    2023-05-20
    vue 打包部署跨域 vue 打包跨域
  • vue项目打包以及优化的实现步骤
    目录vue项目的打包上线及优化vue项目的打包项目托管项目的常见优化vue项目的打包上线及优化 项目完成,我们会将项目进行上线,为了提升性能,我们往往会进行一些优化处理 vue项...
    99+
    2022-11-12
  • uwsgi启动django项目的实现步骤
    目录一.收集静态资源二.配置uwsgi一.收集静态资源 1.settings.py # 静态资源访问的起始url STATIC_URL = '/static/' # 指定静态资源所在...
    99+
    2022-11-11
  • 使用pyinstaller打包django的方法实现
    目录Step 1: 生成spec文件Step 2: 使用pyinstaller 构建可执行文件虽然django项目我们一般通过部署服务器进行发布,但是也有些情况,可能就是一个小小的数...
    99+
    2022-11-12
  • electron打包vue项目的方法步骤
    目录创建项目添加electron-builderelectron下载失败窗体运行打包exe白屏创建项目 点击这里 添加electron-builder 1、在项目目录下运行命令:vu...
    99+
    2022-11-13
  • go项目打包部署的完整步骤
    目录1.go项目在window下编译简易打包2.项目在window下打包成其他系统可运行的文件3.项目在Mac下打包成其他系统可运行的文件5.使用goreleaser多平台打包总结1...
    99+
    2022-11-11
  • SpringBoot项目打jar包与war包的详细步骤
    目录一. SpringBoot项目打war包二. SpringBoot项目打jar包总结背景:使用Idea编辑器 一. SpringBoot项目打war包 步骤: 在pom.xml文...
    99+
    2023-02-24
    springboot 打jar包 java打war包命令 为什么要打war包
  • c#项目将dll打包到exe中的步骤
    目录意图:实现:1、将两个dll库文件作为资源文件添加进项目中;3、在程序入口Program类中调用上面的接口函数4、编译即可。意图: 想将项目用到的两个dll库文件(CryptEn...
    99+
    2022-11-12
  • pyinstaller打包exe程序的步骤和添加依赖文件的实现
    目录pyinstaller打包exe程序和添加依赖文件1、安装pyinstaller库2、pyinstaller的打包机制3、打包命令4、添加导包外的一些依赖文件5、.spec方式打...
    99+
    2022-11-13
  • pyinstaller通过spec文件打包py程序的步骤
    目录Pyinstaller打包环境打包一个py脚本程序打包一个py项目程序补充Pyinstaller pyinstaller是python的一个第三方模块,使用它可以将python程...
    99+
    2023-05-18
    pyinstaller打包py程序 spec文件打包py程序
  • idea项目代码打包为jar包的超详细步骤
    目录前言一、将所有依赖和模块代码打包为一个jar二、只将模块代码打包为一个jar总结 前言 假设我有如下简单 maven 项目 点击 File ==> Projec...
    99+
    2023-01-11
    idea将项目打包成jar包 idea 打包jar idea 打包jar
  • vue项目打包发布上线的方法步骤
    目录一、开发环境到生产环境的转变二、设置统一的请求路径 三、运行打包命令vue项目开发完成后,我们需要将项目打包上线,同时我们希望可以在本地预览生产环境项目 (以vue-c...
    99+
    2022-11-12
  • uniapp项目打包为桌面应用的方法步骤
    安装electron cnpm install electron -g 安装electron-packager cnpm install electron-packager...
    99+
    2022-11-12
  • vue打包项目版本号自加的操作步骤
    目录原因方案步骤原因 项目每次打包后都需要改动项目版本号,这个改动每次都需要在package.json中修改version,比较麻烦,到底有没有一种打包后版本号自加的办法。 方案 版...
    99+
    2022-11-13
  • Vue项目打包并发布的完整步骤记录
    目录1、安装部署Nginx服务器。(类似Tomcat服务器)2、Vue项目打包。总结如何将Vue项目打包并发布?我这边是测试发布到本地,不过步骤是一样的,步骤如下: 1、安装部署Ng...
    99+
    2022-11-13
  • c#项目将dll打包到exe中的步骤是什么
    这篇文章将为大家详细讲解有关c#项目将dll打包到exe中的步骤是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。意图:想将项目用到的两个dll库文件(CryptEnDe.dll和ICSharpCode...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作