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
  • asp之家 网络编程 m.aspxhome.com