用户工具

站点工具


linux:python:python源码保护

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
linux:python:python源码保护 [2020/09/16 10:15] – 创建 zhangguolinux:python:python源码保护 [2023/03/17 10:12] (当前版本) – 外部编辑 127.0.0.1
行 3: 行 3:
  
 转自原文:https://www.cnblogs.com/dhcn/p/11077447.html 转自原文:https://www.cnblogs.com/dhcn/p/11077447.html
 +
 +
 +
 +
 +===== - 使用Cython -- 以下内容经过本人测试OK =====
 +
 +==== - 思路 ====
 +
 +虽说 Cython 的主要目的是带来性能的提升,但是基于它的原理:将 .py/.pyx 编译为 .c 文件,再将 .c 文件编译为 .so(Unix) 或 .pyd(Windows),其带来的另一个好处就是难以破解。
 +
 +==== - 方法 ====
 +
 +使用 Cython 进行开发的步骤也不复杂。
 +
 +1)编写文件 hello.pyx 或 hello.py:
 +
 +<code>
 +def hello():
 +    print('hello')
 +</code>
 +2)编写 setup.py:
 +<code>
 +from distutils.core import setup
 +from Cython.Build import cythonize
 +
 +setup(name='Hello World app',
 +     ext_modules=cythonize('hello.pyx'))
 +</code>
 +3)编译为 .c,再进一步编译为 .so 或 .pyd:   <color #ed1c24>#此处生成出来的so文件不用改名</color>
 +
 +''python setup.py build_ext --inplace''
 +
 +执行 python -c "from hello import hello;hello()" 即可直接引用生成的二进制文件中的 hello() 函数。
 +
 +==== - 优点 ====
 +
 +生成的二进制 .so 或 .pyd 文件难以破解
 +
 +同时带来了性能提升
 +
 +另外一方面的好处,其实还可以帮检查语法,而且语法检查强度看起来比python强一点,比如可以检测到变量没有赋值就使用,或者使用了python的关键字作为变量名或def function名等。
 +
 +==== - 缺点 ====
 +兼容性稍差,对于不同版本的操作系统,可能需要重新编译
 +
 +虽然支持大多数 Python 代码,但如果一旦发现部分代码不支持,完善成本较高
  
  
  
linux/python/python源码保护.1600222550.txt.gz · 最后更改: 2023/03/17 10:12 (外部编辑)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki