Cython编译python为so 代码加密示例


Posted in Python onDecember 23, 2019

1. 编译出来的so比网上流传的其他方法小很多。

2. language_level  是python的主版本号,如果python版本是2.x,目前的版本Cython需要人工指定language_level.

3. python setup.py build_ext --inplace  执行脚本

4. 以下是代码片段

from distutils.core import Extension, setup
 
from Cython.Build import cythonize
from Cython.Compiler import Options
 
 
# __file__ 含有魔术变量的应当排除,Cython虽有个编译参数,但只能设置静态。
exclude_so = ['__init__.py', "mixins.py"]
sources = ['core', 'libs']
 
 
extensions = []
for source in sources:
  for dirpath, foldernames, filenames in os.walk(source):
    for filename in filter(lambda x: re.match(r'.*[.]py$', x), filenames):
      file_path = os.path.join(dirpath, filename)
      if filename not in exclude_so:
        extensions.append(
            Extension(file_path[:-3].replace('/', '.'), [file_path], extra_compile_args = ["-Os", "-g0"],
                 extra_link_args = ["-Wl,--strip-all"]))
 
 
Options.docstrings = False
compiler_directives = {'optimize.unpack_method_calls': False}
setup( 
    # cythonize的exclude全路径匹配,不灵活,不如在上一步排除。
    ext_modules = cythonize(extensions, exclude = None, nthreads = 20, quiet = True, build_dir = './build',
                language_level = 2 或者3 , compiler_directives = compiler_directives))

以上这篇Cython编译python为so 代码加密示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中django框架通过正则搜索页面上email地址的方法
Mar 21 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 Python
Django ORM框架的定时任务如何使用详解
Oct 19 Python
Python三种遍历文件目录的方法实例代码
Jan 19 Python
详解python中的生成器、迭代器、闭包、装饰器
Aug 22 Python
Python常用模块sys,os,time,random功能与用法实例分析
Jan 07 Python
Tensorflow实现多GPU并行方式
Feb 03 Python
aws 通过boto3 python脚本打pach的实现方法
May 10 Python
Selenium webdriver添加cookie实现过程详解
Aug 12 Python
python 使用三引号时容易犯的小错误
Oct 21 Python
Python __slots__的使用方法
Nov 15 Python
pytorch中的model=model.to(device)使用说明
May 24 Python
Python编译为二进制so可执行文件实例
Dec 23 #Python
Python+opencv+pyaudio实现带声音屏幕录制
Dec 23 #Python
python 实现屏幕录制示例
Dec 23 #Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 #Python
Python 内置函数globals()和locals()对比详解
Dec 23 #Python
Python 项目转化为so文件实例
Dec 23 #Python
python 解决cv2绘制中文乱码问题
Dec 23 #Python
You might like
Server.HTMLEncode让代码在页面里显示为源代码
2013/12/08 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
PHP 微信扫码支付源代码(推荐)
2016/11/03 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
JavaScript中数组的合并以及排序实现示例
2015/10/24 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
2016/05/17 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
详解react-router如何实现按需加载
2017/06/15 Javascript
vue二级菜单导航点击选中事件的方法
2018/09/12 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
Python递归遍历列表及输出的实现方法
2015/05/19 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
python实现飞机大战
2018/09/11 Python
Python中安装easy_install的方法
2018/11/18 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
python 杀死自身进程的实现方法
2019/07/01 Python
用Python画一个LinkinPark的logo代码实例
2019/09/10 Python
浅谈Python中的异常和JSON读写数据的实现
2020/02/27 Python
python更新数据库中某个字段的数据(方法详解)
2020/11/18 Python
python中实现栈的三种方法
2020/12/19 Python
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
军训自我鉴定怎么写
2014/02/13 职场文书
大学学风建设方案
2014/05/04 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
白鹤梁导游词
2015/02/06 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
拒绝盗图!教你怎么用python给图片加水印
2021/06/04 Python