Cython编译python为so 代码加密示例
1.编译出来的so比网上流传的其他方法小很多。
2.language_level 是python的主版本号,如果python版本是2.x,目前的版本Cython需要人工指定language_level.
3.pythonsetup.pybuild_ext--inplace 执行脚本
4.以下是代码片段
fromdistutils.coreimportExtension,setup fromCython.Buildimportcythonize fromCython.CompilerimportOptions #__file__含有魔术变量的应当排除,Cython虽有个编译参数,但只能设置静态。 exclude_so=['__init__.py',"mixins.py"] sources=['core','libs'] extensions=[] forsourceinsources: fordirpath,foldernames,filenamesinos.walk(source): forfilenameinfilter(lambdax:re.match(r'.*[.]py$',x),filenames): file_path=os.path.join(dirpath,filename) iffilenamenotinexclude_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代码加密示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。