把django应用 打包 发布成 可独立运行的桌面程序
需求:在pc上运行django+sqlite应用,无须安装django python 数据库 web服务器 。。。
传统django 应用运行在 apache or nginx fastcgi,偽了方便我们用cherrypy来作WEB服务器。
cx_freeze 跨平台的python 打包工具
步骤:
1:下载安装 cx_freeze cherrypy
2 依赖关系 提前导入 项目依赖的包
import django.contrib.auth
import django.contrib.contenttypes
import django.contrib.sessions
import django.contrib.sites
import django.contrib.admin
#these pertain to your application
import subway.models
import subway.views
import urls
import manage
import settings
import django.db.models.sql.compiler
from django.contrib.auth.backends import *
from django.conf.urls.defaults import *
#these are django imports
import django.template.loaders.filesystem
import django.template.loaders.app_directories
import django.middleware.common
import django.contrib.sessions.middleware
import django.contrib.auth.middleware
import django.middleware.doc
import django.contrib.messages
import django.contrib.staticfiles
import django.contrib.messages.middleware
import django.contrib.sessions.backends.db
import django.contrib.messages.storage.user_messages
import django.db.backends.sqlite3.base
import django.db.backends.sqlite3.introspection
import django.db.backends.sqlite3.creation
import django.db.backends.sqlite3.client
import django.contrib.auth.context_processors
from django.core.context_processors import *
import django.contrib.messages.context_processors
import django.contrib.auth.models
import django.contrib.contenttypes.models
import django.contrib.sessions.models
import django.contrib.sites.models
import django.contrib.messages.models
import django.contrib.staticfiles.models
import django.contrib.admin.models
import django.template.defaulttags
import django.template.defaultfilters
import django.template.loader_tags
#dont need to import these pkgs
#need to know how to exclude them
import email.mime.audio
import email.mime.base
import email.mime.image
import email.mime.message
import email.mime.multipart
import email.mime.nonmultipart
import email.mime.text
import email.charset
import email.encoders
import email.errors
import email.feedparser
import email.generator
import email.header
import email.iterators
import email.message
import email.parser
import email.utils
import email.base64mime
import email.quoprimime
import django.core.cache.backends.locmem
import django.templatetags.i18n
import django.templatetags.future
import django.views.i18n
import django.core.context_processors
import django.template.defaulttags
import django.template.defaultfilters
import django.template.loader_tags
from django.conf.urls.defaults import *
import django.contrib.admin.views.main
import django.core.context_processors
import django.contrib.auth.views
import django.contrib.auth.backends
import django.views.static
import django.contrib.admin.templatetags.log
import django.contrib.admin.templatetags.adminmedia
import django.conf.urls.shortcut
import django.views.defaults
#let us hook up cherrypy
#is it possible to hook up the dev server itself?
import cherrypy
from cherrypy import wsgiserver
from django.core.handlers.wsgi import WSGIHandler
from django.core.servers.basehttp import AdminMediaHandler
from django.conf import settings
from django.utils import translation
3: 编写setup文件
from cx_Freeze import setup, Executable
import cx_imports
setup(
name = "ehome",
version = "1.0",
description = "the typical 'Hello, world!' script",
options = dict(build_exe = {'include_files': ['templates','media']}),#拷贝 admin的模板 资源文件
executables = [Executable("ehome.py")])
4: 替换 urls.py中 admin.autodiscover() 成
import django.contrib.auth.admin
#import django.contrib.contenttypes.admin
import django.contrib.sites.admin
否则 后台出现 无权限访问的提示
5: 启动服务
import cherrypy
from cherrypy import wsgiserver
from django.core.handlers.wsgi import WSGIHandler
from django.core.servers.basehttp import AdminMediaHandler
from django.conf import settings
from django.utils import translation
if __name__ == "__main__":
# django.core.management.base forces the locale to en-us. We should
# set it up correctly for the first request (particularly important
# in the "--noreload" case).
translation.activate(settings.LANGUAGE_CODE)
try:
path = './media'
handler = AdminMediaHandler(WSGIHandler(), path)
cherrypy.config.update({
'server.socket_host': 'localhost',
'server.socket_port': 8000,
'log.error_file': 'site.log',
'engine.autoreload_on': True
})
cherrypy.config.update({'environment': 'production',
'log.error_file': 'site.log',
'log.screen': False})
cherrypy.tree.graft(handler, '/')
cherrypy.engine.start()
cherrypy.engine.block()
finally:
cherrypy.engine.exit()
总结: 中间碰到好多问题
1:cx_freeze 文档很少
2:django 用了很多动态加载module的地方 都要手工 一一 import进来
参考:
http://www.jjude.com/2008/04/make-your-django-application-as-a-stand-alone-desktop-application/
http://toolsforagile.com/blog/archives/51
分享到:
相关推荐
在Python开发中,有时需要将程序打包成可执行文件(EXE),以便在没有Python环境的计算机上运行。本教程将详细讲解如何在Python3.6环境下,使用Django框架打包成EXE,包括遇到的坑和解决方案。 一、环境配置 确保你...
在iOS平台上运行Django应用程序可能看起来有些不寻常,因为Django主要是为服务器端开发设计的,而iOS则是移动应用的平台。然而,这种结合可能是为了在iOS设备上进行本地数据处理,或者创建一个离线版的Django应用。...
使用DJANGO框架的简单应用程序使用DJANGO框架的简单应用程序使用DJANGO框架的简单应用程序使用DJANGO框架的简单应用程序使用DJANGO框架的简单应用程序使用DJANGO框架的简单应用程序使用DJANGO框架的简单应用程序使用...
使用DJANGO框架的简单测验应用程序使用DJANGO框架的简单测验应用程序使用DJANGO框架的简单测验应用程序使用DJANGO框架的简单测验应用程序使用DJANGO框架的简单测验应用程序使用DJANGO框架的简单测验应用程序使用...
使用DJANGO的电子商务博客Web应用程序使用DJANGO的电子商务博客Web应用程序使用DJANGO的电子商务博客Web应用程序使用DJANGO的电子商务博客Web应用程序使用DJANGO的电子商务博客Web应用程序使用DJANGO的电子商务博客...
本文将深入探讨Django的核心运行原理,并详细介绍几种常用的Django部署方案,帮助开发者更好地理解如何高效地部署Django应用程序。 #### 一、Python Web程序部署方法概述 在了解具体的Django部署方案之前,有必要...
以下将详细介绍如何在Android设备上运行Django应用程序。 1. **Python环境** 在Android上运行Python应用首先需要一个兼容的Python解释器。由于Django支持Python 2.7(尽管官方已不再维护),我们可以考虑使用像是...
Django打包生成exe,在win环境开机自启动前言配置环境先生成.spec文件通常情况下,直接打包(你无法提前预知缺少的module)运行exe将exe文件写入bat写.vbs文件放入win启动文件中 前言 该文章是本人在实际项目中遇到的...
vagrant-django-template, Vagrant下运行 Django 应用的框架项目 vagrant-django-templateVagrant开发的Django 1.9项目模板。 提供的功能包括:一个 Vagrantfile,用于构建基于Ubuntu的虚拟机一个 virtualenv ( 配置...
本项目是基于《Python编程从入门到实践》一书的第三个实战项目,旨在教你如何使用Django来创建一个完整的Web应用程序。下面,我们将深入探讨Django的核心概念和关键功能。 1. **Django简介** Django是用Python编写...
它涵盖了从开发到部署的全过程,特别强调了使用Nginx和uWSGI在服务器上配置和运行Django应用程序的实践。 【描述】中提到,这是一个实际操作的教程或实例,它包含了一个用Django构建的Web应用的所有必要组件。...
django-dropbox, 一个 Django 应用程序,包含使用Dropbox的Django 存储 django版本 0.1.2什么django Dropbox是一个 Django 应用程序,它包含一个使用Dropbox的Django 存储。安装 ofpip install django-dropbox将
### 知识点详解 #### 一、Django框架简介及环境配置 **知识点1:Django框架概述** - **定义与特点**:...通过这些基础知识的学习,读者可以进一步深入探索Django框架的各种高级特性,并构建出更为复杂的应用程序。
它是一个专门为Django应用程序设计的数据库分片(水平分区)工具,旨在帮助开发者实现数据的分布式存储和管理,提高系统的可扩展性和性能。 **1. 数据库分片基础概念** 数据库分片是将一个大型数据库分解为多个较...
"python + django 小程序"通常指的是利用Python语言和Django框架开发的一个小型、特定功能的应用,例如文件上传和下载功能。这个小程序模板能够帮助开发者快速搭建一个允许用户上传和下载文件的平台。 1. **Python...
微信小程序会议室预约微信小程序+Django服务端后台源码微信小程序会议室预约微信小程序+Django服务端后台源码微信小程序会议室预约微信小程序+Django服务端后台源码微信小程序会议室预约微信小程序+Django服务端后台...
** Django 试题发布和测验系统 ** ...以上是基于"django试题发布和测验"项目的一些关键知识点,涵盖了Django框架的基础及实际应用。开发者通过这个项目,可以深入理解Django的各个层面,并锻炼Web开发的实战技能。
使用 Docker 部署 Django web 应用.zip使用 Docker 部署 Django web 应用.zip使用 Docker 部署 Django web 应用.zip使用 Docker 部署 Django web 应用.zip使用 Docker 部署 Django web 应用.zip使用 Docker 部署 ...