Python 中使用 pyrex 生成 Linux 可执行文件
这个问题是相当有意义的,如果有了比较好的方法,Python 完全可以用来开发商业软件,而不用担心源代码泄露。
前两天我在网上看了看,有很多的人在问这个问题。大部分的人都在用 py2exe,这是个对 Python 程序打包的东东,实际上只是在 Python 程序中找 出依赖的模块,然后发布这个程序。好处在于可以让这个程序脱离 Python 的环境来执行,不用安装 Python 解释器。但实际上并不能保护源代码,因为源 代码其实也包含在其中了。更好的办法是使用 Pyrex。在 http: //www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/ 可以下载到。本来 Pyrex 是一个用来混合 编写 Python 和 C 程序的东西,然后转换为 C 代码,再编译成可执行文件。于是这里就相当于提供了一种方法可以将 Python 代码转换为 C 代码,这样就可 以把 Python 程序编译为真正的可执行文件了!下面说说怎么做。假设我们有一个简单的 Python 程序,代码如下,假设文件名为 go.py。
- def add(a, b):
- print a+b # 为了方便看到函数调用,输出一下
- retur a+b
1.修改 go.py 文件,在里面添加一个 c 函数,当然要用 Pyrex 的语法,用这个函数来调用 Python 程序的入口函数(在这里就是 add 了)。修改 go.py 为 go.pyx。
在这里就是添加一个:
- cdef public int c_add(int a, int b):
- return add(a, b)
- cdef extern int (c_add(int, int))
- #include <stdio.h>
- #include <string.h>
- #include <Python.h>
- #include "go.h"
- int main(int argc, char *argv[])
- {
- Py_Initialize();
- initgo(); // 这个地方的函数名字为init加上模块名,就是原来那个py文件的名字
- c_add(2, 5);
- Py_Finalize();
- return 0;
- }
pyrexc go.pyx gcc go.c main.c -I/usr/include/python2.5 -L/usr/lib/ -lpython2.5 -o go
就生成了叫 go 的可执行文件,执行它,就得到了想要的结果!注:此方法我只在 linux 上试过。(That's enough. - cloud)
相关推荐
IT之家 2020-03-11
graseed 2020-10-28
zbkyumlei 2020-10-12
SXIAOYI 2020-09-16
jinhao 2020-09-07
impress 2020-08-26
liuqipao 2020-07-07
淡风wisdon大大 2020-06-06
yoohsummer 2020-06-01
chenjia00 2020-05-29
baike 2020-05-19
扭来不叫牛奶 2020-05-08
hxmilyy 2020-05-11
黎豆子 2020-05-07
xiongweiwei00 2020-04-29
Cypress 2020-04-25
冰蝶 2020-04-20