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

1.1. 工具

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

1.1.1. py2exe

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

1.1.2. PyPackage

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

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

1.1.3. Installer

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

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

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

1.1.4. Python自带的freeze.py

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

1.1.5. Pyco

1.1.6. Squeeze

1.1.7. cx_Freeze

1.1.8. Stand alone Python for Windows

如果你不介意源程序太过"暴露"的话,用这个吧 ,会不会觉得Updated: Sun, 09 Apr 2000 18:39:54 -0600 扎眼?

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

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

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

1.1.9. py2app

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

1.1.10. Movable Python

这个其实是使用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

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

1.2. 体验

1.2.1. PyInstaller

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

1.2.2. NSIS

2008 at 8:19 PM subject [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 silentAutoCloseWindow trueShowInstDetails nevershowSection ""

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

参考资料:

1.2.3. 实例 Py2exe

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

Python 2.5 + Py2exe 工作目录:c:\python25首先随便写一个程序hello.pyprint "Hello World!"测试一下是否能运行python hello.py结果:Hello World

到www.py2exe.org下载 PY2exe ,或者在SF上下载接下来直接安装PY2EXE包。。它是一个安装文件。。直接装就行了。

下在编写一个设置的PY文件 setup.pyfrom distutils.core import setupimport py2exesetup(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,

andmake 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应用程序发布_关于Python的应用发布技术相关推荐

  1. python 运行程序代码_一些python程序

    <从问题到程序:用Python学编程和计算>--1.2 Python语言简介 本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第1章,第1.2节,作者 ...

  2. python 背景音乐程序代码_用Python演奏音乐

    背景 笔者什么乐器也不会,乐理知识也只有中小学音乐课学的一点点.不过借助Python,调用编曲家常用的MIDI程序库,也能弹奏出一些简单的音乐,以下是笔者的一些心得. 准备 安装mingus 首先是安 ...

  3. python重启程序代码_重启python程序

    跑程序跑到后面就越跑越慢了,就学习了一下重启程序的命令. 这是远程服务器跑的程序,亲测有用. import os import sys def restart_program(): print(&qu ...

  4. python实现程序安装_使用python实现对windows软件包的安装和卸载

    在对windows安装包产品进行测试时,安装和卸载是难免的,并且人工的手动安装和卸载会花费大量的精力和时间,为此需要编写一个脚本来实现对windows安装包产品的自动卸载和安装. 首先参考了 http ...

  5. python画图程序代码_少儿python编程(7)海龟画图(拓展1)

    我们继续用Python的海龟库来画图吧! 上图是画一朵花的程序,重点是6-12行,使用了函数来定义drawleaf:每一掰叶子由两条弧线组成,每一条弧线重复画15次,每次前进5步,右转6度. 看图形化 ...

  6. python语言程序设计项目_《Python语言程序设计》项目报告书Word版

    <<Python语言程序设计>项目报告书Word版>由会员分享,可在线阅读,更多相关<<Python语言程序设计>项目报告书Word版(8页珍藏版)>请 ...

  7. python的程序入口_用python设计程序入口点

    Python不会强迫你使用OOP,比如Java或C,因此如果你没有真正的好处,你就不需要把东西放到类中.在 尤其是创建一个类实例来分组并不是最好的方法.你可以把这些东西提取到一个模块中.这不需要任何实 ...

  8. 用python开发程序代码_用Python开发一款王者荣耀的“脚本”!上王者轻轻松!

    王者荣耀 -很火的手游-简直老少通吃-令人发指-虽然操作简单-但为什么你还是会被虐, 其实 是有技巧的--本文Python大神带你研究王者荣耀各类英雄的出装小技巧,让你成为大神般的存在 前期准备 环境 ...

  9. python 背景音乐程序代码_【Python开源】抖音热门BGM爬虫下载~~~~

    [Python] 纯文本查看 复制代码#!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2018/7/22 18:04 # Author : ...

最新文章

  1. 敏捷软件开发(c#版)文摘
  2. 让AI计算无处不在,华为干了一件大事
  3. day15-JavaScript字符串操作以及跑马灯示例
  4. JAVA实现从上往下打印二叉树(《剑指offer》)
  5. 程序员高薪盛宴背后:程序员正在消失?
  6. 模拟键盘 键盘虚拟代码
  7. 我怀疑全国最会吹牛的人,都在这8个公众号上了
  8. Spark入门(十三)之分组求平均值
  9. 获取线程名称 java 1615387415
  10. 页面校验请求MmEwMD(转载)
  11. 如何解决git冲突,出现更新失败向下的箭头?
  12. poj 3841 Double Queue (AVL树入门)
  13. as ssd测试软件得分少,【科普贴】如何读懂AS SSD的测试数据
  14. 微信小程序:宝宝起名神器
  15. 异步操作及定时任务框架quzrtz在donet平台的使用
  16. 复习Python爬取必应的壁纸
  17. C语言 输出字母倒三角形
  18. python爬取网页数据软件,有哪些不错的爬虫软件是可以免费爬取网页数据的?
  19. 基于vue2.0的一个分页组件
  20. SWUST OJ285: 程序设计C 实验三 题目五 求二阶逆矩阵

热门文章

  1. Swift控件封装-分页控制器
  2. python爬虫登录爱奇艺_python实现爱奇艺登陆密码RSA加密的方法示例详解
  3. 安装Keil 4.7.4
  4. win10解除占用端口
  5. 解除安卓车机禁止安装软件_赫兹app下载安装-赫兹交友软件下载v3.5.7 安卓官方版...
  6. Shopee规定的发货时间是多久?超时会有影响吗?
  7. 什么是反弹shell
  8. LaTex 允许公式跨页
  9. ansys用什么cpu_ansys多cpu并行计算设置
  10. java构造器(构造方法)用private和public修饰的区别