主要更新记录:
凡欲转载、部分转载、引用我原创的文章,请标明作者是牡蛎,同时请给出原始连接;你可以部分转载、引用我的文章,前提是这不会引起他人误解我的原意。未经书面允许,我的文章、文章部分不可以用于商业用途(含传统出版物、需要积分或者虚拟货币才可以浏览的网上内容)。如果你不同意,请勿转载、部分转载、引用。谢谢合作。
如何编译Python程序(或者如何由Python生成可执行文件)是一个非常常见的问题,总是有人问,列出来,google搜索的时候就可以看到了。如果还有人说"找不到相关资料",唯一的解释就是这个人太懒了,根本没有去找。
如果转载,请注明作者是牡蛎,出自http://blender.blogchina.com/523381.html。
0. Python(及其它高级的脚本语言)不存在把指令编译到本地代码的工具,但是总是可以发布可执行文件。
另类的方法,对Python语言特性都还不是100%支持,众多的CPython模块也不可以使用,还有,我也没有试过:
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的反编译软件”。而我不相信有人愿意花钱买这个“唯一的且很多的”反编译软件,理由有二
次成熟的反编译软件是decompiler.py。但是它比商业软件decompyle差远了。我没有去做试验,是他自己的主页承认说有很多局限的。
最后,真诚请教那些有“很多”Python反编译程序的高手,两个问题:
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=523381
|
- 评论人:牡蛎
2007-01-13 10:59:49
|
|||
zogtong2003,我不明白你的意思,我不用linux和QT,国内有QT的论坛,也有python社区(www.python.cn),你去那里看看吧 |
||||
|
- 评论人:zogtong2003
2007-01-11 15:45:32
|
|||
近期很郁闷,想请教一个问题:我做视频播放器mplayer在嵌入式平台的界面,最终选这了emotion皮肤,这个是一个基于qt3和mplayer的皮肤,用python进行编译,qt3和mplayer的交叉编译都已经搞定,就是这个皮肤没有编译到嵌入式arm平台了,现在正式移植这个皮肤,但是感觉很郁闷:遇到很多问题,以前低估了其中的工作量和难度。如下:这个emotion皮肤是是基于qt3的也是qt编写的,但是编译用python,我不知道这样能否实现嵌入式平台的交叉编译,请朋友给出意见,我也可以给出emotion的具体configure和makefile文件,configure很简单,只是确定qt路径和安装路径:
|
||||
|
- 评论人:小冰
2006-11-20 11:50:02
|
|||
里面把中文弄成2个字节的受不了应该是4个字节才对鄙视 |
||||
|
- 评论人:andelf
2006-02-19 13:11:29
|
|||
内容已转至baidu贴吧~
|
||||
|
- 评论人:冰冻牡蛎
2005-12-31 21:29:27
|
|||
是吗?我比较喜欢installer,不过我只用windows
|
||||
|
- 评论人:cry
2005-12-30 17:16:24
|
|||
我几乎尝试了所有的工具,最后的选择是:
|
||||
|
- 评论人:冰冻牡蛎
2005-11-24 16:20:44
|
|||
我是windows用户,没有用过gcj
|
||||
|
- 评论人:ONE_Fox
2005-11-23 12:27:22
|
|||
2。用jython,然后用jbuilder、jsmooth、NativeJ之类的包裹一下,或者用gcj编译成本地代码
|
||||
|
- 评论人:牡蛎
2005-06-09 23:08:15
|
|||
:) |
||||
|
- 评论人:BIGBOY
2005-06-04 21:05:46
|
|||
如何“编译”Python程序,文章出处我加上了。 |
||||