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定时采集摄像头图像上传ftp服务器功能实现
Dec 23 Python
对于Python异常处理慎用“except:pass”建议
Apr 02 Python
Python与Redis的连接教程
Apr 22 Python
django之session与分页(实例讲解)
Nov 13 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
Feb 26 Python
python学生信息管理系统
Mar 13 Python
python 获取一个值在某个区间的指定倍数的值方法
Nov 12 Python
python自定义线程池控制线程数量的示例
Feb 22 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
Python过滤序列元素的方法
Jul 31 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
Aug 30 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
MyEclipse常用配置图文教程
2014/09/11 PHP
推荐25款php中非常有用的类库
2014/09/29 PHP
PHP实现指定字段的多维数组排序函数分享
2015/03/09 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
2018/03/12 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
Javascript 实用小技巧
2010/04/07 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
JavaScript插件化开发教程(五)
2015/02/01 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
jquery点击展示与隐藏更多内容
2016/12/03 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
vue-cli4.x创建企业级项目的方法步骤
2020/06/18 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
python 读写中文json的实例详解
2017/10/29 Python
对python中的高效迭代器函数详解
2018/10/18 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
使用python获取邮箱邮件的设置方法
2019/09/20 Python
详解python中eval函数的作用
2019/10/22 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
校园网站的创业计划书范文
2013/12/30 职场文书
初中化学教学反思
2014/01/23 职场文书
教师个人读书活动总结
2014/07/08 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
保送生自荐信范文
2015/03/26 职场文书