如何把Django+sqlite应用打包发布成可独立运行的桌面程序?

如何把Django+sqlite应用打包发布成可独立运行的桌面程序?需求:在pc上运行django+sqlite应用,无须安装django python 数据库 web服务器

2个回答

用pyinstaller打包Django,自动的就把sqlite数据库打包进去了。可以运行,就是打包的文件太大。
下面就是我再csdn上下载的word文件里的做法,作者名字我给忘了。亲测可用。

Django项目打包exe程序。
(一)、安装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',
如下是我配置的manage.spec文件内容:

-*- mode: python -*-

block_cipher = None

a = Analysis(['manage.py'],
pathex=['E:\work\PyCharmWorkSpace\FirstLogin'],
binaries=[(r'E:\work\PyCharmWorkSpace\FirstLogin\front\static_root',r'.\front\static_root'), (r'E:\work\PyCharmWorkSpace\FirstLogin\front\templates', r'.\front\templates')],
datas=[(r'E:\work\PyCharmWorkSpace\FirstLogin\front\static_root',r'.\front\static_root'),(r'E:\work\PyCharmWorkSpace\FirstLogin\front\templates', r'.\front\templates')],
hiddenimports=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes',
'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles',
'login','login2',
'FirstLogin.database_router',
'login.urls','login2.urls',
],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='manage',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='manage',
)

注意:标蓝部分,执行pyinstaller manage.spec后,cd dist然后执行manage.exe runserver,提示缺少什么往hiddenimports加入什么。
(五)、以上hiddenimports弄好后,运行后会出现以下的错误TemplateDoesNotExist。  
这个是因为没有找到templates文件

![图片说明](https://img-ask.csdn.net/upload/201902/28/1551336191_278457.png)

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

(六)、在第五步后,可以发现页面已经出来,但是发现页面没有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')],
上边有我配置的spec文件可以观看。
考虑到第5步,再这里我也直接将templates文件打包到了对应的文件。所以第五步就不用自己再复制templates文件到指定的文件夹了,此处需要注意的是需要改动settings中templates DIRS的配置改为:
'DIRS': [os.path.join(BASE_DIR,'front', 'templates')]
意思是查找front中的templates静态文件,front\static文件是用来手机样式文件的(执行命令),front\templates中存放页面静态文件(需手动)。
注意:请勿将页面静态文件放入front\static文件中。
最后.spec文件看起来如上边我附上的manage.spec代码。

一切准备好后,执行下面语句就OK
pyinstaller manage.spec
然后cd dist 执行manage.exe runserver

pyinstaller打包django项目
https://blog.csdn.net/qq_34809033/article/details/81873896

七、Django 浏览器打开警告Not Found: /favicon.ico
https://blog.csdn.net/u013251992/article/details/77855956
浏览器打开http://127.0.0.1:8000/
终端显示警告:
[05/Sep/2017 12:24:59] "GET /hello HTTP/1.1" 404 1947
Not Found: /favicon.ico

解决方法:
本机路径C:\Python36\Lib\site-packages\django\contrib\admin\static\admin\img
找一个图片以favicon命名,且将后缀改为.ico格式,放到此路径中重启服务即可解决。

python_tty
python_tty 那你在找找吧,我也是参考别人的文章
7 个月之前 回复
LeeBingNing
今天周一天气晴 这个我看过了,那一大片的import不知道写在哪儿。这个网页不好用呀。
7 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何把Django+sqlite应用打包发布成可独立运行的桌面程序?
如何把Django+sqlite应用打包发布成可独立运行的桌面程序?需求:在pc上运行django+sqlite应用,无须安装django python 数据库 web服务器
把django应用 打包 发布成 可独立运行的桌面程序
把django应用 打包 发布成 可独立运行的桌面程序   需求:在pc上运行django+sqlite应用,无须安装django python 数据库 web服务器 。。。     传统django 应用运行在 apache or nginx fastcgi,偽了方便我们用cherrypy来作WEB服务器。   cx_freeze 跨平台的python 打包工具   步骤:  ...
spy++ 可独立运行程序
不用多介绍了吧.spy++ 窗口句柄跟踪必备。
如何把jbuilder编译成可独立运行的程序?
我用jbuilder编译的程序需要安装了jbuilder的系统才能运行,rn这样才能让它独立运行?
使用Docker打包发布Django应用
阿里云服务器环境: 系统:CenterOS 7.3 1核2GB 1. 打包本地镜像文件 dockerhub上有django的dockerfile文件 首先在本地的Django文件根目录下创建Dockerfile文件,把上面这段话复制到dockerfile里,我的目录结构是这样的 然后创建requirements.txt,在里面添加自己需要的依赖环境 然后我使用的是vscode,直接右键d...
基于Django的独立运行脚本开发
在Django框架下工作时间长了,会对Django的技术设施产生依赖,比如其方便的ORM,如果写基于Django的独立运行脚本,主要在脚本前面加上以下代码: import sys,os,django sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) #把manage.py所在目录添加到系统目
如何编译独立运行的程序
如何用cb6编译独立运行的程序好像和cb5的不同
自己的程序如何独立运行?
如何设置选项使程序脱离IDE独立运行?既在未安装C++Builder的机器上也可运行?
如何使程序独立运行
近日在vc6下写了一程序,能正常运行,当拿到别的未装vc的机子上时,老出现缺少dll文件,如何编译能使程序能在任何机器上运行
如何编写可独立运行的控制台程序??
我用C++Builder5.0编写控制台程序(dos程序),不能脱离C++Builder环境,哪位先生给以点拔,送100分。rn 要编写可独立运行的带窗体的程序,只须将Project->Project Options->Packages中的 Build with run time packages复选框的勾去掉,但此法对编写控制台程序不灵。
如何生成可独立运行的EXE?
我在程序中使用了数据库,所以不知该如何生成独立可运行的EXE,该如何做请大虾指点,谢谢!
如何使用maven把项目打包成可运行的jar
本人小白一枚,前端时间用idea写了一个springboot程序,需要达成jar,可是用idea自带的打包工具,jar运行时总是报错,所以改用maven,最后把方法分享给大家. 一,打包的前提是已经安装了maven,如果没有安装,可以先安装,教程网上有很多,在dos下,运行命令: mvn -v,出现如下信息说明已经成功安装maven. 二,如果程序运行无异常,需要打包,注意有几个坑(心酸)...
如何把程序嵌入桌面
我发现有的软件在WIN2000/XP下能把界面嵌入桌面,即使是图标都能盖过它,这个怎么实现呢?
独立运行的程序
预处理器可能是最好的思想作为一个独立运行的程序,在编译时编译你的程序。预处理程序运行时,它只是通过扫描每个代码文件从上到下,寻找指令。指令的具体指示,开始与#符号和一个换行符结束(不是一个分号)。有几种不同类型的指令,我们将在下面。 预处理器是不聪明,不懂C++语法;相反,它只处理文本之前,编译器运行。然后,预处理器的输出发送到编译器。 包括 你已经看到了# include指令在行动。当你#
程序独立运行
附源码,调试了一上午,希望对大家有点帮助 ...
***关于程序的独立运行?
我已经去掉了rnbuilder with runtime packagesrnuse dynamic RTLrn两个选项,但是在没有安装BCB的机中还是提示找不到动态链接库rndesignide60.bplrnrtl60.bplrnvcl60.bplrn加上就好了rn是什么原因。(程序中用了一个下载的控件,没影响吧)rn怎样做才能确保能够独立运行?
桌面独立
请问各位高手 rn 怎样在电脑的各个用户之间设置独立的桌面啊?rn 就是在管理员用户建立 的文件不会在其他的用户出现
如何打包发布程序?
本人很菜啊,大虾帮一下忙。rn还有就是如何注册*.dll,*.ocx?
如何打包发布程序
我们用vc开发的系统终于完成了rn请问各位高收如何进行打包发布呀?
QT 程序如何打包发布
求教各位,QT程序如何打包发布,能够在各种平台的电脑上运行(至少在windows系统上)。rnrn我现在只是写一个最简单的hello world程序,用“MSVC2008发布”编译,然后找到release文件夹,使用打包工具ASPACK软件打包成一个.exe文件,把它单独放在一个文件夹中,并加入了QTGui4.dll和QTCore4.dll两个文件。rnrn这样一个程序在我自己的电脑上是可以正常运行的,可是我把它复制到我的虚拟机里(windows操作系统),就提示出错:由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。rnrn不知道各位是如何发布程序的,希望能够指点一下我。
asp.net的程序如何打包发布?
需要给别人用(要那种傻瓜安装式的)rn其实就需要做的只是3件事:rn1.自动安装frameworkrn2.将那些aspx考到iis的一个指定目录rn3.自动注册几个我编的dll.rnrnrnrn
GLUT如何打包发布程序?
就是在没安装GLUT的电脑上也可以运行
请问程序如何打包发布
自己写了一个BCB2010+SQL2005的数据库程序,采用ADO连接,已经编译出release版本,但是在移植到其他未安装SQL的电脑上就无法运行,提示错误如图rnrn[img=https://img-bbs.csdn.net/upload/201408/23/1408764581_834613.png][/img]rnrn如果电脑安装了SQL就不会出现这个问题;rnrn有没有什么办法在没有安装SQL数据库的电脑上运行呢??rnrnrn
Django如何独立使用model
第一步:初始化 Django的一些环境import sys import os# 获取当前文件的目录 pwd = os.path.dirname(os.path.realpath(__file__)) # 获取项目名的目录(因为我的当前文件是在项目名下的文件夹下的文件.所以是../) sys.path.append(pwd+"../") os.environ.setdefault("DJANGO_S
JAR如何独立运行
打开CMD 用java -jar xxx.jar 这个都会。。rnrn我想知道的是如何让jar运行之后,CMD可以关闭。。rnrn现在是CMD一关,程序就跟着关了。
如何独立运行TeamExplorer?
看《移山之道》上说,TeamExplorer可以独立运行,也可以嵌入到ide中,请问如何独立运行呢?rn
如何编译可以独立运行的程序。
编译能够脱离PB环境的应用程序,如何设置。
【Django】运行你的第一个Django应用
Django 与python 版本对应关系 Django是一个开放源代码的Web应用框架,由Python写成。 Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。 Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。 Django 版本 Python 版本 1.8 2.7, 3.2 , 3.3...
swing程序独立运行要如何配置环境
eclipse开发的rn
如何让C图形程序独立运行??
下面是实现图形程序独立运行的具体步骤:rn  1.将驱动程序EGAVGA.BGI转换成目标文件EGAVGA.OBJ:rn  C:\TC>BGIOBJ EGAVGArn(在这里,我的tc目录下面没有*.BGI的文件,到哪里可以找到?rn 还有进入dos方式后,在tc的目录下面执行命令BGIOBJ EGAVGA,得到以下输出,我该怎么办?rn 'bgiobj' 不是内部或外部命令,也不是可运行的程序rn或批处理文件。)rn 下面的步骤就没有试了…………大家帮帮忙啊,^_^rn  按同样的办法,将字体文件*.CHR转换成目标文件*.OBJ:rn  C:\TC>BGIOBJ TRIPrn  C:\TC>BGIOBJ LITTrn  C:\TC>BGIOBJ SANSrn  C:\TC>BGIOBJ GOTHrn  2.将上述建立的OBJ文件加入到GRAPHICS.LIB库文件中,具体方法如下:rn  C:\TC>TLINK C:\TC\LIB\GRAPHICS.LIB+EGAVGArn  C:\TC>TLINK C:\TC\LIB\GRAPHICS.LIB+TRIPrn  C:\TC>TLINK C:\TC\LIB\GRAPHICS.LIB+LITTrn  C:\TC>TLINK C:\TC\LIB\GRAPHICS.LIB+SANSrn  C:\TC>TLINK C:\TC\LIB\GRAPHICS.LIB+GOTHrn  也可以使用TLIB、PRJ程序代替TLINK。rn  3.在程序中调用initgraph()函数前,应加上如下语句:rn  registerbgidriver(EGAVGA-driver);rn  它通知连接程序把EGAVGA驱动程序装入用户的执行程序中,同样在装入字体文件之前要加上如下语句:rn  registerbgifont(字体文件名);rn  4.通过上述处理后,编译连接后的执行程序就可以在任何目录下运行了。这时,将屏幕初始化为图形模式的函数可改写为:rn  void InitGra(void)rn  int GD=DETECT,GM;rn  registerbgidriver(EGAVGA_driver);rn  registerbgifont(triplex_font);rn  registerbgifont(small_font);rn  registerbgifont(sansserif_font);rn  registerbgifont(gothic_font);rn  initgraph(&GD,&GM,"");rn  rn  按照以上步骤,就能实现图形程序的独立运行,在Turbo C2.0、Borland   C++2.0、Borland C++3.1下均运行通过。rnrn
如何编译一个可以独立运行的程序?
如何编译一个可以独立运行的程序?
请教:如何把程序的窗口作为系统的桌面窗口运行?
-
请教:如何把程序的窗口作为系统的桌面窗口运行???
-
把每个页面左成独立的silverlight程序,怎么调用?
1。把每个页面都做成独立的silverlight程序,用以个主程序来调用,同时还要给每个程序传递参数,该怎么办?rn2。如果象这样怎么把相同的基础DLL独立出来,不要每个应用程序都包括,让体积小一点.
隐藏桌面运行程序
隐藏桌面运行程序到右下角的小工具,超级好用,办公室必备。
程序打包发布
1.进入易量官网,下载易量软件;2.根据易量安装制作实例,安装软件;3.如果电脑上没有VS等IDE,下载vcredist_x86.exe至打包文件夹下,并在Section "MainSection" SEC01语句块末端输入:ExecWait '"$INSTDIR\vcredist_x86.exe"';4.点击运行,生成安装包,完成打包制作。
关于程序独立运行的问题
作了一个报纸发行管理的小程序,后台用的是SQLanywhere,请问各位高手,rn编译后,怎样才能让其他不具有PB和SQLanywhere环境的机器运行这个程序?rn是不是还需要其他的什么文件?请各位高手指点
vb6的程序不能独立运行?
本人用VB6写了一个库存管理程序,用的是Access数据库,用VB自带的打包rn程序打包后,在另外一台没有装VB6的机器上安装,提示"运行时错误 3706rn未找到提供者",但我将VB6再装一遍后,就能运行了。希望各位高手指点。rn谢谢!
怎样让程序独立运行?
我用C#做了一个小软件,在另一台机子上运行时提示我缺动态链接库,需要NetFramework。我想让程序不安装这个.net框架就能运行,该怎样做?
桌面级应用小程序桌面级应用小程序
在桌面上显示一些有趣的东西,很好玩的东西
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池