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 相关文章推荐
利用一个简单的例子窥探CPython内核的运行机制
Mar 30 Python
python实现根据ip地址反向查找主机名称的方法
Apr 29 Python
Python中with及contextlib的用法详解
Jun 08 Python
Python内置函数—vars的具体使用方法
Dec 04 Python
python之Flask实现简单登录功能的示例代码
Dec 24 Python
在Python 字典中一键对应多个值的实例
Feb 03 Python
Python对wav文件的重采样实例
Feb 25 Python
Pycharm新手使用教程(图文详解)
Sep 17 Python
Python如何使用vars返回对象的属性列表
Oct 17 Python
细说NumPy数组的四种乘法的使用
Dec 18 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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
业余方法DIY电子管FM收音机
2021/03/02 无线电
用PHP和ACCESS写聊天室(四)
2006/10/09 PHP
linux下 C语言对 php 扩展
2008/12/14 PHP
php学习笔记 数组遍历实现代码
2011/06/09 PHP
PHP语法自动检查的Vim插件
2014/08/11 PHP
在Nginx上部署ThinkPHP项目教程
2015/02/02 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
php实现的递归提成方案实例
2015/11/14 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
xml和web特殊字符
2009/04/28 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
JavaScript常见的五种数组去重的方式
2016/12/15 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
2017/02/15 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
详解VUE前端按钮权限控制
2019/04/26 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
Electron + vue 打包桌面操作流程详解
2019/06/24 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
token 机制和实现方式
2020/12/15 Javascript
Python基于动态规划算法计算单词距离
2015/07/25 Python
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
VScode编写第一个Python程序HelloWorld步骤
2018/04/06 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
python 图像平移和旋转的实例
2019/01/10 Python
python实现对输入的密文加密
2019/03/20 Python
Django获取应用下的所有models的例子
2019/08/30 Python
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
入党申请书自我鉴定
2013/10/12 职场文书
旅游活动总结
2014/08/27 职场文书