Cython
加密源代码,虽然 Cython
的作用主要是为了提高代码的运行效率,但是也对源代码有一定的加密效果。# dependency.py
def some_function(x, y):
return x * y
# example.py
from dependency import some_function
def add(x, y):
return x + y + some_function(x, y)
if __name__ == '__main__':
print(add(3, 4))
# setup.py
from distutils.core import setup
from Cython.Build import cythonize
setup(
# 程序名
name='test',
# 需要编译的脚本列表
ext_modules=cythonize(
[
"dependency.py",
"example.py",
# ...
],
# Python 版本
language_level=3
),
)
python setup.py build_ext --inplace
命令的作用是在当前目录中构建 C/C++ 扩展模块,并将编译后的模块放置在当前目录中,以便在开发过程中进行测试和调试。# 执行成功日志
版权所有(C) Microsoft Corporation。保留所有权利。
[1/2] Cythonizing dependency.py
[2/2] Cythonizing example.py
dependency.c
正在创建库 build\temp.win-amd64-cpython-312\Release\dependency.cp312-win_amd64.lib 和对象 build\temp.win-amd64-cpython-312\Release\dependency.cp312-win_amd64.exp
正在生成代码
已完成代码的生成
example.c
正在创建库 build\temp.win-amd64-cpython-312\Release\example.cp312-win_amd64.lib 和对象 build\temp.win-amd64-cpython-312\Release\example.cp312-win_amd64.exp
正在生成代码
已完成代码的生成
.c
源文件和 .pyd
的二进制 windows 动态链接库文件
,在 linux
环境下生成的是 .so
为后缀的共享对象文件。.so 文件和 .pyd 文件
使用和原 .py
文件使用方式一致,但 .pyd
文件名需要和原文件名保持一致。·# run.py
import example
if __name__ == '__main__':
print(example.add(3, 4))
error: Microsoft Visual C++ 14.0 or greater is required
Microsoft Visual C++14.0或更高版本
。pyconfig.h(59): fatal error C1083: 无法打开包括文件: “io.h”: No such file or directory
visualstudio
工具进行安装:win11
,所有选择 win11 SDK
。dynamic module does not define module export function
在 run.py 中使用 .pyd 时,需要和原文件名称保持一致,否则会出现如上错误,比如上面的示例中原文件为 example.py 则生成的链接文件应该为 example.pyd
.py .pyc .pyd .so .pyx
的区别.py 文件
.pyc 文件
.pyd 文件
.so 文件
.pyx 文件
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。
🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。
💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。
🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。
📖 保持关注我的博客,让我们共同追求技术卓越。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。