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实用代码片段收集贴
Jun 03 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
django站点管理详解
Dec 12 Python
Python 获取 datax 执行结果保存到数据库的方法
Jul 11 Python
Pytorch Tensor的统计属性实例讲解
Dec 30 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
Python loguru日志库之高效输出控制台日志和日志记录
Mar 07 Python
Python sql注入 过滤字符串的非法字符实例
Apr 03 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
Apr 24 Python
几款Python编译器比较与推荐(小结)
Oct 15 Python
python实现b站直播自动发送弹幕功能
Feb 20 Python
5道关于python基础 while循环练习题
Nov 27 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
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
Laravel手动返回错误码示例
2019/10/22 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
番茄的表单验证类代码修改版
2008/07/18 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
2014/01/09 Javascript
jqGrid读取选择的多行的某个属性代码
2014/05/18 Javascript
jQuery实现form表单元素序列化为json对象的方法
2015/12/09 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
js实现内置计时器
2019/12/16 Javascript
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
python实现的一个火车票转让信息采集器
2014/07/09 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
Python解决pip install时出现的Could not fetch URL问题
2019/08/01 Python
python 修改本地网络配置的方法
2019/08/14 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
编辑硕士自荐信范文
2013/11/27 职场文书
护理不良事件检讨书
2014/02/06 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
十二生肖观后感
2015/06/12 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis
Java spring定时任务详解
2021/10/05 Java/Android
python 安全地删除列表元素的方法
2022/03/16 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技