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使用pil生成缩略图的方法
Mar 26 Python
在Python中处理字符串之ljust()方法的使用简介
May 19 Python
Python中random模块用法实例分析
May 19 Python
Python字符串处理实例详解
May 18 Python
python日期时间转为字符串或者格式化输出的实例
May 29 Python
python傅里叶变换FFT绘制频谱图
Jul 19 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
Sep 20 Python
Python使用Tkinter实现滚动抽奖器效果
Jan 06 Python
python实现二分类和多分类的ROC曲线教程
Jun 15 Python
pytorch学习教程之自定义数据集
Nov 10 Python
python实现发送QQ邮件(可加附件)
Dec 23 Python
Python plt 利用subplot 实现在一张画布同时画多张图
Feb 26 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
PHP新手上路(四)
2006/10/09 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
PHP7变量处理机制修改
2021/03/09 PHP
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
js的匿名函数使用介绍
2013/12/11 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
谈谈JavaScript中的垃圾回收机制
2020/09/17 Javascript
编写Python脚本批量下载DesktopNexus壁纸的教程
2015/05/06 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
Python模拟登录验证码(代码简单)
2016/02/06 Python
解决python中无法自动补全代码的问题
2018/12/04 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
Python 循环终止语句的三种方法小结
2019/06/24 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
python之随机数函数的实现示例
2020/12/30 Python
劳动模范事迹材料
2014/01/19 职场文书
《我要的是葫芦》教学反思
2014/02/23 职场文书
三好学生个人总结
2015/02/15 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python