免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3640 | 回复: 0
打印 上一主题 下一主题

●如何“编译”Python程序(转载) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-13 13:35 |只看该作者 |倒序浏览

主要更新记录:
  • 2005年6月4日更新,添加
    movpy
    条目。同时针对
    http://blender.blogchina.com/1776425.html
    , 做如下申明:
       

    欲转载、部分转载、引用我原创的文章,请标明作者是牡蛎,同时请给出原始连接;你可以部分转载、引用我的文章,前
    提是这不会引起他人误解我的原意。未经书面允许,我的文章、文章部分不可以用于商业用途(含传统出版物、需要积分或者虚拟货币才可以浏览的网上内容)。如
    果你不同意,请勿转载、部分转载、引用。谢谢合作。

       
  • 2005年11月更新,添加
    [color="#0000ff"]Shed Skin -  A Python-to-C++ Compiler

    Psyco

    PyPy

    pyc
    。今天的 更新就像在说绕口令。
  • 2006年01月24日,
    movpy
    变成商业软件了 :(
  • 2006 年11月26日,添加了对“反编译”“编译”之后的文件的看法
  • 2006年12月06日,添加
    Jungle

如何编译
Python
程序(或者如何由
Python
生成可执行文件)
是一个非常常见的问题,总是有人问,列出 来,
google
搜索的时候就可以看到了。如果还有人说"找不到相关资 料",唯一的解释就是这个人太懒了,根本没有去找。
如果转载,请注明作者是牡蛎,出自
http://blender.blogchina.com/523381.html


    0.
Python
(及其它高级的脚本语言)不存在把指令编译到本地代码 的工具,但是总是可以发布可执行文件。
 
  • py2exe     
    http://py2exe.sf.net
        只支持windows平台,应该 是大家听到最多的一个名字了,用户不少,所以有问题的话在它的
    mail  list
    里面很容易找到答案。文档中提到了"无法找到某某code"、使用opengl等模块的问题
       
     
       
  • PyPackage     
    http://codereactor.net/projects/pypack/index.html
        我 觉得
    py2exe

    等工具还是罗嗦得像唐僧,需要在配置文件中写上需要的数据
    文件。作者完全无视这样一个事实:我需要发布可执行文件的时候,程序已经完工了,所有的数据文件就在主程序所在目录下,所以多数情况下,根本不用到别的地
    方搜索。现在终于有人站了出来,PyPackage实际上并不是一个程序打包的工具,而只是简化py2exe的操作,甚至可以自动调用
    InnoSetup 5
    制作安装文件——不过这个软 件并不智能,会打包很多不需要的文件
       
     
       
  • 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月更新:
    [color="#0000ff"]这里
    可以看到Gordon McMillan's的原始网站的镜像
       
     
       

  • Python
    自带的freeze.py(不过windows版本不带这个,你可 以自己下载
    Python
    的源程序再找)。这个是我最不推荐的一种方法(为什 么?自己看),不过如果你的
    Python
    程序要发布到其它工具不支持的平台 上,可以考虑这个方法
       
     
       
  • 新出来的Pyco   
    http://www.pythonapocrypha.com/projects/pyco/
        还 没用过
       
     
       
  • Squeeze   
    http://starship.python.net/crew/fredrik/ipa/squeeze.htm
        还 没用过,只支持
    Python
    1.4
       
     
       
  • cx_Freeze   
    http://starship.python.net/crew/atuining/cx_Freeze/
        winodws、 linux平台。简单的程序甚至都不需要写配置文件
       
     
       
  • 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,如果真的可以这么做,还请告诉我。
     
       
  • py2app   
    http://undefined.org/python/
        支 持linux平台的工具可能也支持mac os,或者直接使用这个
    py2app
    。 具体就不知道了,只吃过苹果,还没玩过苹果呢
       
     
       

  • Movable Python
      
    http://www.voidspace.org.uk/python/movpy/
        这 个其实是使用
    py2exe
    制作的、可以放在U盘上的绿色
    Python
    。有使用
    py2app
    制作苹果版movpy和用
    cx_Freeze
    制 作Linux版
    movpy
    的计划。懒 到都不愿意学习
    py2exe

    py2app
    或者
    cx_Freeze
    的 人可以看看。
       
     
       

  • Shed Skin - A Python-to-C++  Compiler
    : 试验项目,windows上,连他的例子我都没有编译成功 :(。
       
     
       

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

       
     
       

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

       
     
       

  • pyc

    Python
    compiler in
    Python
    ,一个用纯
    Python
    写的
    Python
    的bytecode编译器,可以优化输出的pyc文件。和
    PyPy
    一样,现 在还看不出对发布
    Python
    程序的直接好处。只有py24的 bytecode。
    pyc

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

  • Jungle
    :  使用GNU工具(as、ld和winres)把
    Python
    程序编译到 windows的exe可执行文件。该可执行文件只使用基于python24的的pythonic.dll。猜测它支持的模块仅限于内部模块以及 jungle.jgl列出的模块。只有可执行文件下载,而这个可执行文件也是用
    Jungle
    自己编译的。目前版本号都到 1.10了,经常看0.xx的版本号,这个数字好大啊,娃哈哈。
       
     
       
    另类的方法,对
    Python
    语言特性都还不是100%支持,众多的
    CPython
    模块也不可以使用,还有,我也没有试过:
  • for  .NET的
    Python
    编译器(如
    Visual Python

    IronPython
    ),不过我可不 喜欢为了一个芝麻大的软件安装.NET framework

  • jython
    ,然后用jbuilder、
    jsmooth
    、NativeJ之类的包裹一下,或者用
    gcj
    编译成本地代码
       
     
       
    2006 年11月26日,近来有些人问,如何保护python开发的商业软件/闭源软件。
    我的观点是,纯
    Python
    程序,又不想用C语言(其实C语言程序也可以破解,所以最好的方法就 是不发布任何程序,嘿嘿),可以试试
    pyobfuscate
    混淆源代码,增加可能被反编译获得的源代码的阅读难度。不过
    pyobfuscate
    也好久没有更新了,娃哈哈。而实际上,没必要考虑别人会获得源代码的问题。  考虑(尤其是在自己的程序还没有写出来的时候)别人会反编译自己的
    Python
    程 序,有点杞人忧天。
    在*nix下的话,似乎可以(我不用*nix,并不确定)使用
    Python
    自带的freeze.py,把源程序的字节码转换成C程序,然后使用 GCC编译,这样应该看不到字节码了。在windows下,不知道怎么使用freeze.py,总报错——谁知道的话告诉我吧。但是如果想实现跨平台,使 用freeze.py的方法似乎不可取。
    首先我相信,目前没有软件可以很好反编译
    Python
    2.4及之后的版本生成的字节码,所以采用新版本
    Python
    “编译”到可执行文件,是安全的。
    其次,据我所知, 目前最成熟的反编译软件只有
    decompyle
    。 而不是象某些人为了夸大问题的重要性,而口吐莲花所说的“现在有很多
    Python
    的 反编译软件”。而我不相信有人愿意花钱买这个“唯一的且很多的”反编译软件,理由有二
  • 看看
    decompyle
    页面更新日期,是 2004年。我猜测作者把这个软件商业化之后并不成功,并没有太多人需要反编译自己或者他人的
    Python
    程序。导致作者没有足够的收入或者兴趣继续完善了
  • 有 人愿意花钱去反编译一个还不存在地软件,或者一个不出名的程序?
    次成熟的反编译软件是
    decompiler.py
    。 但是它比商业软件
    decompyle
    差 远了。我没有去做试验,是他自己的主页承认说有很多局限的。
    最后,真诚请教那些有“很多”
    Python
    反编译程序的高手,两个问题:

  • subsystem.htm
        这 是将数独游戏和消除游戏结合起来的益智游戏,未注册的话,只能累积玩60分钟。这是
    Python
    +
    pygame
    制作的软件,使用
    py2exe
    发布,可否麻烦高手——别怕,我不要它的源程序——看看它的注册部分, 整个注册机/注册码出来?

  • wingide
        这 个有名的
    Python
    商业ide,我不确定它是不是使用
    py2exe
    制作的,而且它的规模比较大。我对它的源代码有点兴趣,有人说看不到它 的源代码,但是我觉得\bin\2.4\src.zip里面的一堆pyo,是如假包换的源代码的字节码,如果真是如此,麻烦高手在空余时间,反编译一份 喽。
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/46672/showart_2069252.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP