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从MP3文件获取id3的方法
Jun 15 Python
详解Python中的from..import绝对导入语句
Jun 21 Python
Django如何实现内容缓存示例详解
Sep 24 Python
Bottle框架中的装饰器类和描述符应用详解
Oct 28 Python
TensorFlow变量管理详解
Mar 10 Python
Django model序列化为json的方法示例
Oct 16 Python
python实现简单名片管理系统
Nov 30 Python
python远程调用rpc模块xmlrpclib的方法
Jan 11 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
Dec 25 Python
python简单实现9宫格图片实例
Sep 03 Python
python向企业微信发送文字和图片消息的示例
Sep 28 Python
python+opencv实现视频抽帧示例代码
Jun 11 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中对用户身份认证实现两种方法
2011/06/04 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
jQuery中调用WebService方法小结
2011/03/28 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
javascript实现二级级联菜单的简单制作
2015/11/19 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
javascript html5轻松实现拖动功能
2017/03/01 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
JS实现鼠标移动拖尾
2020/12/27 Javascript
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
pandas DataFrame 根据多列的值做判断,生成新的列值实例
2018/05/18 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
Python一键安装全部依赖包的方法
2019/08/12 Python
python网络爬虫 CrawlSpider使用详解
2019/09/27 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
德国PC硬件网站:CASEKING
2016/10/20 全球购物
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
岗位职责风险点
2014/03/12 职场文书
优秀家长自荐材料
2014/08/26 职场文书
教师个人查摆剖析材料
2014/10/14 职场文书
员工离职通知函
2015/04/25 职场文书
指导教师推荐意见
2015/06/05 职场文书
MYSQL优化之数据表碎片整理详解
2022/04/03 MySQL
Nginx配置之禁止指定IP访问
2022/05/02 Servers
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS