Cython编译python为so 代码加密示例
作者:nxeexn 时间:2023-01-22 13:16:48
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))
来源:https://blog.csdn.net/nxeexn/article/details/83996248
标签:Cython,python,so
0
投稿
猜你喜欢
Python就将所有的英文单词首字母变成大写
2023-09-21 10:44:35
django定期执行任务(实例讲解)
2022-12-13 20:43:35
python新式类和经典类的区别实例分析
2023-07-28 10:01:02
python利用正则表达式提取字符串
2021-12-08 15:13:29
python multiply()与dot使用示例讲解
2021-08-14 19:34:52
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2023-11-18 01:11:16
MySQL慢查询日志超详细总结
2024-01-17 00:17:21
浅谈Pandas 排序之后索引的问题
2022-03-18 12:28:32
详解Python+Matplotlib绘制面积图&热力图
2021-10-10 10:16:29
实例讲解如何利用crontab定时备份MySQL
2009-01-04 13:06:00
tf.concat中axis的含义与使用详解
2021-05-21 12:38:00
详解Python语法之模块Module
2021-06-24 06:28:28
python 处理telnet返回的More,以及get想要的那个参数方法
2023-02-09 11:32:14
JavaScript对象的创建模式与继承模式示例讲解
2024-04-23 09:27:40
mysql 复制表结构和数据实例代码
2024-01-18 00:00:45
javascript实现右下角广告框效果
2024-04-17 10:25:08
python学习之可迭代对象、迭代器、生成器
2023-08-22 03:21:46
像线程一样管理进程的Python multiprocessing库
2023-06-01 15:37:39
MySQL数据库卸载的完整步骤
2024-01-13 13:12:52
Node.js多进程的方法与参数实例说明
2024-05-02 17:37:37