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局部赋值的规则
Mar 07 Python
numpy实现合并多维矩阵、list的扩展方法
May 08 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
Python 字符串转换为整形和浮点类型的方法
Jul 17 Python
python3+opencv3识别图片中的物体并截取的方法
Dec 05 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
Jan 04 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
Jan 14 Python
Pandas删除数据的几种情况(小结)
Jun 21 Python
python+Django实现防止SQL注入的办法
Oct 31 Python
Python的缺点和劣势分析
Nov 19 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
May 27 Python
Django返回HTML文件的实现方法
Sep 17 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&mysql(六)
2006/10/09 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
jquery中ajax学习笔记3
2011/10/16 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
js动态拼接正则表达式的两种方法
2014/03/04 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
初步了解javascript面向对象
2015/11/09 Javascript
jquery解析XML及获取XML节点名称的实现代码
2016/05/18 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
微信小程序实现banner图轮播效果
2020/06/28 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
2020/11/05 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
Python的subprocess模块总结
2014/11/07 Python
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
详解Python函数作用域的LEGB顺序
2016/05/14 Python
解决python报错MemoryError的问题
2018/06/26 Python
python获取中文字符串长度的方法
2018/11/14 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
Python 使用多属性来进行排序
2019/09/01 Python
PythonPC客户端自动化实现原理(pywinauto)
2020/05/28 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
写自荐信要注意什么
2013/12/26 职场文书
新驾驶员个人自我评价
2014/01/03 职场文书
超市员工辞职信范文
2015/05/12 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
Django 实现jwt认证的示例
2021/04/30 Python
Python入门之基础语法详解
2021/05/11 Python
pytorch实现手写数字图片识别
2021/05/20 Python
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python