`
hqman
  • 浏览: 363057 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

把django应用 打包 发布成 可独立运行的桌面程序

 
阅读更多

把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

分享到:
评论

相关推荐

    python3.6及Django打包exe文件详细教程

    在Python开发中,有时需要将程序打包成可执行文件(EXE),以便在没有Python环境的计算机上运行。本教程将详细讲解如何在Python3.6环境下,使用Django框架打包成EXE,包括遇到的坑和解决方案。 一、环境配置 确保你...

    ios运行django的例子

    在iOS平台上运行Django应用程序可能看起来有些不寻常,因为Django主要是为服务器端开发设计的,而iOS则是移动应用的平台。然而,这种结合可能是为了在iOS设备上进行本地数据处理,或者创建一个离线版的Django应用。...

    使用DJANGO框架的简单应用程序.zip

    使用DJANGO框架的简单应用程序使用DJANGO框架的简单应用程序使用DJANGO框架的简单应用程序使用DJANGO框架的简单应用程序使用DJANGO框架的简单应用程序使用DJANGO框架的简单应用程序使用DJANGO框架的简单应用程序使用...

    使用DJANGO框架的简单测验应用程序.zip

    使用DJANGO框架的简单测验应用程序使用DJANGO框架的简单测验应用程序使用DJANGO框架的简单测验应用程序使用DJANGO框架的简单测验应用程序使用DJANGO框架的简单测验应用程序使用DJANGO框架的简单测验应用程序使用...

    使用DJANGO的电子商务博客Web应用程序.zip

    使用DJANGO的电子商务博客Web应用程序使用DJANGO的电子商务博客Web应用程序使用DJANGO的电子商务博客Web应用程序使用DJANGO的电子商务博客Web应用程序使用DJANGO的电子商务博客Web应用程序使用DJANGO的电子商务博客...

    python教程之Django部署资料

    本文将深入探讨Django的核心运行原理,并详细介绍几种常用的Django部署方案,帮助开发者更好地理解如何高效地部署Django应用程序。 #### 一、Python Web程序部署方法概述 在了解具体的Django部署方案之前,有必要...

    android运行django例子

    以下将详细介绍如何在Android设备上运行Django应用程序。 1. **Python环境** 在Android上运行Python应用首先需要一个兼容的Python解释器。由于Django支持Python 2.7(尽管官方已不再维护),我们可以考虑使用像是...

    Django2.0打包生成exe,在win10或7环境开机自启动

    Django打包生成exe,在win环境开机自启动前言配置环境先生成.spec文件通常情况下,直接打包(你无法提前预知缺少的module)运行exe将exe文件写入bat写.vbs文件放入win启动文件中 前言 该文章是本人在实际项目中遇到的...

    vagrant-django-template, Vagrant下运行 Django 应用的框架项目.zip

    vagrant-django-template, Vagrant下运行 Django 应用的框架项目 vagrant-django-templateVagrant开发的Django 1.9项目模板。 提供的功能包括:一个 Vagrantfile,用于构建基于Ubuntu的虚拟机一个 virtualenv ( 配置...

    Python使用Django创建Web程序

    本项目是基于《Python编程从入门到实践》一书的第三个实战项目,旨在教你如何使用Django来创建一个完整的Web应用程序。下面,我们将深入探讨Django的核心概念和关键功能。 1. **Django简介** Django是用Python编写...

    django_Demo完结.zip

    它涵盖了从开发到部署的全过程,特别强调了使用Nginx和uWSGI在服务器上配置和运行Django应用程序的实践。 【描述】中提到,这是一个实际操作的教程或实例,它包含了一个用Django构建的Web应用的所有必要组件。...

    django-dropbox, 一个 Django 应用程序,包含使用Dropbox的Django 存储.zip

    django-dropbox, 一个 Django 应用程序,包含使用Dropbox的Django 存储 django版本 0.1.2什么django Dropbox是一个 Django 应用程序,它包含一个使用Dropbox的Django 存储。安装 ofpip install django-dropbox将

    写你的第一个Django应用.pdf

    ### 知识点详解 #### 一、Django框架简介及环境配置 **知识点1:Django框架概述** - **定义与特点**:...通过这些基础知识的学习,读者可以进一步深入探索Django框架的各种高级特性,并构建出更为复杂的应用程序。

    Python-DjangoHorizon用于Django应用程序的简单数据库分片水平分区库

    它是一个专门为Django应用程序设计的数据库分片(水平分区)工具,旨在帮助开发者实现数据的分布式存储和管理,提高系统的可扩展性和性能。 **1. 数据库分片基础概念** 数据库分片是将一个大型数据库分解为多个较...

    python + django 小程序

    "python + django 小程序"通常指的是利用Python语言和Django框架开发的一个小型、特定功能的应用,例如文件上传和下载功能。这个小程序模板能够帮助开发者快速搭建一个允许用户上传和下载文件的平台。 1. **Python...

    微信小程序会议室预约系统微信小程序+Django服务端后台源码.zip

    微信小程序会议室预约微信小程序+Django服务端后台源码微信小程序会议室预约微信小程序+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 部署 Django web 应用.zip使用 Docker 部署 ...

Global site tag (gtag.js) - Google Analytics