收集如何 将Py应用打包发布的各种技巧:

1.1. 工具

工欲善其事,必先利其器.python是解释型的语言,但是在windows下如果要执行程序的话还得加个python shell的话,未免也太麻烦了.而这里所说的东西就是将python程序转换为exe文件.下面是一些常用的工具,不过似乎py2exe应用的更加广泛一些.

1.1.1. py2exe

  • http://py2exe.sf.net

只支持windows平台,应该是大家听到最多的一个名字了,用户不少,所以有问题的话在它的mail list里面很容易找到答案。文档中提到了"无法找到某某code"、使用opengl等模块的问题

1.1.2. PyPackage

  • http://codereactor.net/projects/pypack/index.html

我觉得py2exe等等工具还是罗嗦得像唐僧,需要在配置文件中写上需要的数据文件。作者完全无视这样一个事实:我需要发布可执行文件的时候,程序已经完工了,所有的数据文件就在主程序所在目录下,所以多数情况下,根本不用到别的地方搜索。现在终于有人站了出来,PyPackage实际上并不是一个程序打包的工具,而只是简化py2exe的操作,甚至可以自动调用InnoSetup 5制作安装文件


不过这个软件并不智能,会打包很多不需要的文件

1.1.3. Installer

  • http://www.mcmillan-inc.com/installer_dnld.html

可以产生windows、linux平台的可执行文件,现在作者主页连不上去了,但是搜索一下可以在其它地方下载 自带一个小程序写配置文件,如果程序较复杂,还是需要手工修改这个配置文件。支持从py15以来的所有Python版本

  • 2005 年9月,冰冻牡蛎更新:Giovanni Bajo获得Gordon McMillan's Installer的授权、版权改变为GPL,

    • 并在 http://pyinstaller.hpcf.upr.edu/ 继续开发PYinstaller。

  • 2006年9月更新:这里可以看到 Gordon McMillan's的原始网站的镜像

1.1.4. Python自带的freeze.py

(不过windows版本不带这个,你可以自己下载Python的源程序再找)。 这个是我最不推荐的一种方法(为什么?自己看),不过如果你的Python程序要发布到其它工具不支持的平台上,可以考虑这个方法

1.1.5. Pyco

新出来的

  • http://www.pythonapocrypha.com/projects/pyco/

还没用过

1.1.6. Squeeze

  • http://starship.python.net/crew/fredrik/ipa/squeeze.htm

还没用过,只支持Python 1.4

1.1.7. cx_Freeze

  • http://starship.python.net/crew/atuining/cx_Freeze/

winodws、linux平台。简单的程序甚至都不需要写配置文件

1.1.8. Stand alone Python for Windows

  • http://arctrix.com/nas/python/standalone.html

如果你不介意源程序太过"暴露"的话,用这个吧

会不会觉得Updated: Sun, 09 Apr 2000 18:39:54 -0600 扎眼?

  • 如果你看一看它的VC源代码,就不会这么想了

其实这是普遍适用于win系统的方法,无论是98、2000或者xp。也许也可以用到linux上


我不懂linux,如果真的可以这么做,还请告诉我。

1.1.9. py2app

  • http://undefined.org/python/

支持linux平台的工具可能也支持mac os,或者直接使用这个py2app。具体就不知道了,只吃过苹果,还没玩过苹果呢

1.1.10. Movable Python

  • http://www.voidspace.org.uk/python/movpy/

这个其实是使用py2exe制作的、可以放在U盘上的绿色Python。有使用py2app制作苹果版movpy和用cx_Freeze制作Linux版movpy的计划。懒到都不愿意学习py2exe、py2app或者cx_Freeze的人可以看看。

1.1.11. Shed Skin

- A Python-to-C++ Compiler:

  • 试验项目,windows上,连他的例子我都没有编译成功 :(。

1.1.12. Jungle

: 使用GNU工具(as、ld和winres)把Python程序编译到windows的exe可执行文件。

  • 该可执行文件只使用基于python24的的pythonic.dll。
  • 猜测它支持的模块仅限于内部模块以及jungle.jgl列出的模块。
  • 只有可执行文件下载,而这个可执行文件也是用Jungle自己编译的。
    • 目前版本号都到1.10了,经常看0.xx的版本号,这个数字好大啊,娃哈哈。

1.1.13. 另类的方法

,对Python语言特性都还不是100%支持,众多的CPython模块也不可以使用,还有,我也没有试过:

for .NET的Python编译器
  • (如Visual Python、IronPython),不过我可不喜欢为了一个芝麻大的软件安装.NET framework

  • 用jython,然后用jbuilder、jsmooth、NativeJ之类的包裹一下,或者用gcj编译成本地代码

1.1.13.1. Psyco

: 给Python程序加速的东西,看不出对发布Python程序的直接好处,并且作者以后将致力于PyPy。

1.1.13.2. PyPy

: 项目目标是纯Python实现的Python、速度比CPython快,将来可以帮助实现编译Python。

1.1.13.3. pyc

: Python compiler in Python,一个用纯Python写的Python的bytecode编译器,可以优化输出的pyc文件。

  • 和PyPy一样,现在还看不出对发布Python程序的直接好处。只有py24的bytecode。

  • pyc是pyvm这个新的python虚拟机的一部分。

1.1.13.4. Pyrex

使用Pyrex

  • 直接将Python 应用编译成 C 代码,然后,自然就生成.exe 了

1.2. 体验

  • 手动制作python的exe可执行程序 ~ byLeoJay

1.2.1. PyInstaller

{{{nEO (a.k.a. gentoo.cn) <gentoo.cn@gmail.com>reply-to python-cn@googlegroups.com, to python-cn@googlegroups.com, date Wed, Apr 2, 2008 at 12:34 AM}}} http://pyinstaller.python-hosting.com/

吸取了py2exe的优点, 支持打包成一个可执行文件, 支持upx壳, 支持多平台 体积比py2exe生成的小 我现在用这个替代py2exe了

1.2.2. NSIS

{{{Gerald Lee <leejd80@gmail.com>reply-to python-cn@googlegroups.com, to python-cn@googlegroups.com, date Tue, Apr 1, 2008 at 8:19 PMsubject [CPyUG:45664] Re: 将Python程序转化为可执行程序[整理]}}}

  • 这两天一直在写NSIS脚本做安装程序,因为是N个模块定制安装的,所以我用python写,然后输出NSI脚本文件,再逐个编译,以产生需要的安装文件。
  • 写脚本的过程突然发现一个问题,是不是可以使用nsis脚本来引导python程序呢?以前一直是用bat文件引导的。顺手写了一个,测试感觉可行,生成的一个exe文件33K,NSIS代码如下:
Name "Python Launcher"
Icon "images\shipping.ico"
OutFile "GridOK.exe"

SilentInstall silent
AutoCloseWindow true
ShowInstDetails nevershow

Section ""
  Exec "pythonw GridOK.py";这里可能需要变动一下
SectionEnd

参考资料:

  • http://www.blogjava.net/xilaile/archive/2007/05/13/117039.html

1.2.3. 实例 Py2exe

在最后,给一个人学习py2exe的文章,帮助学习: 最近学了一点PYTHON,想把PYTHON写的程序转换成EXE文件,在网上查到了资料后发现了这个东东写下来做一下记录。 英文教程:

  • http://www.py2exe.org/index.cgi/Tutorial

Python 2.5 + Py2exe 工作目录:c:\python25

首先随便写一个程序
  • hello.py
    print "Hello World!"
测试一下是否能运行
  • python hello.py
    结果:Hello World
  • 到www.py2exe.org下载 PY2exe ,或者在SF上下载

接下来直接安装PY2EXE包
  • 。。它是一个安装文件。。直接装就行了。
  • 下在编写一个设置的PY文件 setup.py

    from distutils.core import setup
    import py2exe
    setup(console=['hello.py'])

运行:python setup.py py2exe   出现以下信息后,在DIST目录里,就会有一个hello.exe 即成功。

running py2exe
*** searching for required modules ***
*** parsing results ***
creating python loader for extension 'zlib'
creating python loader for extension 'unicodedata'
creating python loader for extension 'bz2'
*** finding dlls needed ***
*** create binaries ***
*** byte compile python files ***
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\bz2.py to bz2.pyc
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\unicodedata.py to unicodedata.pyc
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\zlib.py to zlib.pyc
skipping byte-compilation of c:\Python24\lib\StringIO.py to StringIO.pyc
[skipping many lines for brevity]
skipping byte-compilation of c:\Python24\lib\warnings.py to warnings.pyc
*** copy extensions ***
*** copy dlls ***
copying c:\Python24\lib\site-packages\py2exe\run.exe -> C:\Tutorial\dist\hello.exe
*** binary dependencies ***
Your executable(s) also depend on these dlls which are not included,
you may or may not need to distribute them.
Make sure you have the license if you distribute any of them, and
make sure you don't distribute files belonging to the operating system.
  ADVAPI32.dll - C:\WINDOWS\system32\ADVAPI32.dll
  USER32.dll - C:\WINDOWS\system32\USER32.dll
  SHELL32.dll - C:\WINDOWS\system32\SHELL32.dll
  KERNEL32.dll - C:\WINDOWS\system32\KERNEL32.dll

Python 应用发布技术相关推荐

  1. (转载)Python 应用发布技术

    (转载)Python 应用发布技术 2011年08月09日 分类: 脚本 2009-04-08 17:05 722人阅读 评论(0) 收藏 举报 1. Python 应用发布技术收集如何 将Py应用打 ...

  2. Python后端相关技术/工具栈

    Python后端相关技术/工具栈 转载http://python.jobbole.com/83486/ 整理下目前涉及到的python的技术栈和工具栈(用过或了解的, 其他的后续用到再补充) 编辑器 ...

  3. pythonweb开发-手把手教你写网站:Python WEB开发技术实战

    摘要:本文详细介绍了Python WEB开发的基础入门.以一个博客站点的开发为例讲解了基于Django框架开发WEB站点的全过程.通过本文的学习可以快速掌握基于Django的Python WEB的开发 ...

  4. python web-手把手教你写网站:Python WEB开发技术实战

    摘要:本文详细介绍了Python WEB开发的基础入门.以一个博客站点的开发为例讲解了基于Django框架开发WEB站点的全过程.通过本文的学习可以快速掌握基于Django的Python WEB的开发 ...

  5. python开发一个自己的技术网站_手把手教你写网站:Python WEB开发技术实战

    摘要:本文详细介绍了Python WEB开发的基础入门.以一个博客站点的开发为例讲解了基于Django框架开发WEB站点的全过程.通过本文的学习可以快速掌握基于Django的Python WEB的开发 ...

  6. Python 30 年技术演进史:生于小众,崛起 AI!

    作者 | 宋天龙,TrueMetrics 合伙人 出品 | AI科技大本营(ID:rgznai100) [CSDN 编者按]一切都始于1989年的那个圣诞节,Python的诞生并不算恰逢其时,它崛起充 ...

  7. 手把手教你写网站:Python WEB开发技术实战

    摘要:本文详细介绍了Python WEB开发的基础入门.以一个博客站点的开发为例讲解了基于Django框架开发WEB站点的全过程.通过本文的学习可以快速掌握基于Django的Python WEB的开发 ...

  8. python的优点有哪些-Python有哪些技术上的优点?比其他语言好在哪儿?

    原标题:Python有哪些技术上的优点?比其他语言好在哪儿? 作者:马克·卢茨(Mark Lutz) 导读:本文是对Python一些最优的技术特性的快速介绍,以解答初学者关心的问题并消除他们最常见的疑 ...

  9. python与seo实战课程下载_黑帽seo教程:SEO快排套路与SEO快排Python应用编程技术(零基础)...

    黑帽seo教程:SEO快排套路与SEO快排Python应用编程技术(零基础) 授课内容简介 两个模块:「SEO套路」和「SEO应用编程」 「SEO套路」模块,分 "域名.内容&模板. ...

最新文章

  1. Linux命令之du
  2. Python必学内容:格式化输出的三种方式
  3. 打破技术型思维:产品经理的门槛在门里面
  4. Windows server 2003域下全局组、本地域组及通用组之间的关系详解
  5. 不自定义异步方法的线程池默认使用SimpleAsyncTaskExecutor
  6. mysql 5.5半同步复制_(5.5)mysql高可用系列——MySQL半同步复制(实践)
  7. mysql多字段分库分表基因码_一文学会常用 MySQL 分库分表方案
  8. nginx日志统计分析的相关常用命
  9. mysql decimal 上限_关于mysql的decimal类型的外键的一个特殊限制
  10. 密码重置用HTML怎么弄,如何用简单命令重置路由器密码
  11. Ios android crash report,iOS App 后台 Crash 调查
  12. 用tikz画球坐标系下的体积微元
  13. 零基础怎样制作自己的网页网站具体流程 - WordPress建站
  14. 一个控制键盘远程控制多台视频会议摄像机(转自搜狐)
  15. 计算机鼠标不显示桌面,电脑开机后不显示桌面只有鼠标箭头,怎么回事
  16. 软件产品确认测试包括哪些方面
  17. mysql server 安装教程_MySQL Server 的安装方法及简要步骤
  18. 【百度知道】拉弧圈球时,总感觉吃不透板是怎么回事啊?
  19. 电脑裸妆linux,美妆相机pc版 版本 V5.0.0
  20. 解决Visual Studio输出中文乱码问题

热门文章

  1. Python多进程之Manager
  2. 05-nunjucks模板入门
  3. Word 2010插入超链接——使用相对路径
  4. 速领电商:抖音有哪些风格
  5. 如何在iPhone或Mac上取消 Apple提供的付费订阅?
  6. 大学物理第三版朱峰课后答案详解_大学物理习题答案(朱峰版).doc
  7. 中国式家长如何成为计算机科学家,中国式家长清华大学怎么弄_一周目上清华流程介绍_3DM单机...
  8. 想从iOS转移到Android阵营?这里有你必须要知道的
  9. 【虚幻引擎UE】UE4/UE5 环境构建插件推荐及使用介绍
  10. 网络socket编程指南 (转)