Chinaunix

标题: 关于脱离python环境运行的问题,再次重申。 [打印本页]

作者: xichen    时间: 2006-01-11 19:19
标题: 关于脱离python环境运行的问题,再次重申。
http://wiki.woodpecker.org.cn/moin/PyProgFaq里面已经讲很清楚了。
特转贴过来,请大家根据情况来选择适合的方式。

如果你只是希望用户运行一个单独的程序而不需要预先下载一个python的发行版,则并不需要将Python代码编译成C代码。有很多工具可以找出程序依赖的模块并将这些模块 与程序绑定在一起以产生一个单独的执行文件。

其中一种工具就是freeze tool, 它作为Tools/freeze被包含在python的代码树中。它将python字节码转换成C数组,和一个可将你所有模块嵌入到新程序中的编译器,这个编译器跟python模块链接在一起。

它根据import语句递归地扫描源代码,并查找在标准python路径中的模块和源代码目录中的模块(内建模块)。用python写的模块的字节码随后被转换成C代码(可以通过使用marshal模块转换成代码对象的数组构 造器),并产生一个可自定义的配置文件,只包含程序使用了的模块。 最后将生成的C代码编译并链接至余下的的python解释器,产生一个与你的script执行效果完全一样的单独文件。

显然,freeze需要一个C编译器。但也有一些工具并不需要。首先便是Gordon McMillan's installer,它在

http://www.mcmillan-inc.com/install1.html

它工作在Windows, Linux和至少是部分Unix变种上。
(注:在*nix下推荐此方式。通过make后得到一个独立的文件。)

另一个便是Thomas Heller的 py2exe (只适用于Windows平台),它在

http://starship.python.net/crew/theller/py2exe

(注:在win下推荐此方式,使用简单,功能强大。缺点是会生成一大堆文件。和必须要python.dll)

第三个是Christian Tismer的  SQFREEZE,它将字节码附在一个特殊的python解释器后面,解释器负责找到这段代码。Python 2.4可能会引入类似的机制。

其它工具包括Fredrik Lundh的  Squeeze 和 Anthony Tuininga的  cx_Freeze.
作者: 1212everyday    时间: 2006-01-12 23:08
谢谢
作者: nyliubing    时间: 2006-01-13 21:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: newview    时间: 2006-01-16 15:54
好难懂哦。
作者: macrodba    时间: 2006-01-25 16:52
么看明白呢! 支持一下了!!!
作者: lvscar    时间: 2006-02-07 00:07
其实 最把稳的方法是。 把你的python程序 放在 <a href="http://www.activestate.com/Products/ActivePython/">activepython</a> 包里。   
但这样 包就有点大了

但好处是 只要的你python程序 在activePython环境下运行通过   你可以毫无顾虑的在  几乎所有平台下运行。
作者: limodou    时间: 2006-02-07 00:21
activepython据我所知只能在windows下运行。因此所说的

几乎所有平台下运行


是不是改为在windows下运行。另外,这种方法与安装一个windows版的python有何区别?

许多软件还需要第三方的模块,activepython也不能包罗万象。
作者: lvscar    时间: 2006-02-07 12:56
呵呵。。新版本的  ActivePython 2.4.2.10支持的平台  恐怕已经能说几乎所有平台了吧

AIX/PowerPC    HP-UX/PA-RISC   Linux/x86   Linux/x86_64 (AMD64)   Mac OS X/PowerPC  Mac OS X/x86   Solaris 10/x86  Solaris/SPARC   Windows/x64 (AMD64)   Windows/x86

Activepython  就是一个python的超集/或者说 发行版。  除了公版python核心外, 还有很多常用的 比如说压缩,,图形处理,bsddb数据库,Tix GUI widgets for Tkinter 。   基本能对付日常程序了。  虽然这些东西都可以自己分别在不同的平台下装。但 这会是一件相当麻烦的事。

还要说一下 Activepython 环境 在所有系统下都是全部组件一个文件夹。 如果你的python程序要在两个不同的linux发行版本上运行。 这个环境可以帮你省下不少繁琐的组件同步过程。

http://www.activestate.com/Produ ... lex?id=ActivePython

[ 本帖最后由 lvscar 于 2006-2-7 13:04 编辑 ]
作者: limodou    时间: 2006-02-07 13:45
看来变化是很大,我几乎就没有关注过 ActivePython,对ActivePython就是在刚开始学的时候用过,以后再也没有用过,呵呵。

还是打成安装包为好。象你说的,体积太大是一个问题。而且如果有第三方不包括的模块一样的麻烦。还不如做成安装包体积小,而且windows, linux下都可以做。当然linux下就不能使用py2exe了。可以使用 py2install。
作者: lvscar    时间: 2006-02-07 19:05
呵呵。。谢谢老大的指教   
        我现在还很菜。  没有涉及过windows平台。
以后多多交流。
作者: unixer2i    时间: 2006-02-08 16:40
原帖由 limodou 于 2006-2-7 13:45 发表
看来变化是很大,我几乎就没有关注过 ActivePython,对ActivePython就是在刚开始学的时候用过,以后再也没有用过,呵呵。

还是打成安装包为好。象你说的,体积太大是一个问题。而且如果有第三方不包括的模块一 ...


google py2install not found in the web,maybe it has been contained in python itself。

作者: limodou    时间: 2006-02-09 02:30
我记错了,报歉,是Installer。可以在 http://www.the-jedi.co.uk/downloads/installer/ 下载。
作者: dx6490    时间: 2006-02-09 10:56
标题: py2exe如何使用啊?
下载了py2exe,但不知道如何使用,请大虾们指点一二
作者: limodou    时间: 2006-02-09 11:10
它自带例子,网上也找着到。搜一下吧。
作者: yuntinghill    时间: 2006-02-18 09:54
"几乎所有平台下运行。 "

似乎在不同windows版本下由py2exe生成的exe 不一定兼容
例如在2000 pro下生成的exe 在 2000 server下就有可能出现异常

另外 py2exe 根据不同的命令 有几种生成方式 ,最少可只生成3个文件
但不知有谁测试过 哪种方式的exe启动最快 运行最快?

[ 本帖最后由 yuntinghill 于 2006-2-18 09:58 编辑 ]
作者: yuntinghill    时间: 2006-02-18 10:21
原帖由 dx6490 于 2006-2-9 10:56 发表
下载了py2exe,但不知道如何使用,请大虾们指点一二


当前程序命令行>setup.py -q py2exe -b1  //生成文件较少(4个) 如setup.py设置zipfile=None只3个
当前程序命令行>setup.py py2exe --help  //获取有关py2exe 的help 信息
作者: ellory    时间: 2006-02-21 12:04
哪一种方法比较好呢? 有没有详细的使用说明啊? 我下载了installer,不知道怎么用~~
limodou大大能不能提供一个小例子?
作者: limodou    时间: 2006-02-21 12:50
我也没有用过installer。
作者: retsyo    时间: 2006-05-24 09:56
看这里
http://blender.bokee.com/523381.html
作者: jigloo    时间: 2007-06-03 16:21
都用了, 感觉pyinstaller最好, 有点像activeperl的PDK




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2