cython编译python_Cython编译python为so 代码加密示例

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 代码加密示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值