使用 Cython 编译将.py文件加密成.so文件

article/2025/8/14 22:53:45

文章目录

  • 1. .so文件的核心意义和优势
  • 2. 使用 Cython 编译,将.py文件加密成.so文件

最近在学习在服务器上如何部署Python模型,不学不知道,一学吓一跳,要学好多啊,最近看到什么就记录一下什么吧。

1. .so文件的核心意义和优势

在服务器上部署时会有Python的将 .py 文件编译为 .so(Linux)或 .pyd(Windows)文件,主要有以下核心意义和优势:
1. 代码保护与加密

  • 防止源码泄露
    .so 是二进制文件,无法直接阅读,保护核心算法或商业逻辑(尤其对闭源项目至关重要)。
  • 规避反编
    译风险 相比 .pyc(Python 字节码),.so 更难逆向工程,安全性更高。
    2. 性能优化
  • 加速执行
    Cython 将 Python 代码编译为 C 扩展,计算密集型任务(如数值计算、循环)性能可提升 10-100 倍。
  • 减少解释器开销
    直接调用编译后的机器码,跳过 Python 解释器的动态类型检查。
    3. 依赖简化
  • 隐藏第三方库依赖
    编译时可将部分依赖静态链接到 .so 中,减少服务器环境配置的复杂性。
  • 避免环境冲突
    二进制文件对 Python 版本和操作系统有明确要求,强制环境一致性。
    4. 部署便利性
  • 无源码部署
    只需分发 .so 文件,无需暴露源代码,适合交付客户或云服务器部署。
  • 跨平台兼容性
    通过交叉编译生成目标平台的 .so,适配不同服务器环境(需匹配 Python 版本和 OS)。
    5. 资源控制
  • 内存管理优化
    Cython 支持手动管理内存(如 cdef 定义 C 类型变量),减少 Python 垃圾回收压力。
  • 系统调用集成
    可直接调用 C/C++ 库,实现底层操作(如高性能 IO、硬件加速)。

2. 使用 Cython 编译,将.py文件加密成.so文件

直接演示在jupyter上如何使用 Cython 编译,将.py文件加密成.so文件
安装cython包

!pip install cython

安装成功会显示入下图

由于我在jupyter上,Python文件后缀为.ipynb,需要先转换成.py文件,再加密成.so文件

# 1 将.ipynb 文件转换保存为 .py文件
import nbformat
from nbconvert import PythonExporter# 2.读取 .ipynb 文件 
with open("entropy_weight.ipynb", "r", encoding="utf-8") as f:notebook = nbformat.read(f, as_version=4)# 3.转换为 .py
exporter = PythonExporter()
python_code, _ = exporter.from_notebook_node(notebook)# 4.保存为 .py 文件
with open(r"C:\Users\xxx\Desktop\entropy_weight.py", "w", encoding="utf-8") as f:f.write(python_code)
%%writefile setup.py
## 必须要在第一行
from distutils.core import setup 
from Cython.Build import cythonize
# 5 创建 setup.py 编译脚本
setup(ext_modules=cythonize(r"C:\Users\xxx\Desktop\entropy_weight.py"))

在这里插入图片描述

# 6. 编译命令
!python setup.py build_ext --inplace

✅ 你的编译已成功,生成了Windows平台的 .pyd 文件,而非 .so(entropy_weight.cp311-win_amd64.pyd)
在这里插入图片描述

✅ 使用 import entropy_weight 可直接调用

调用.so文件

import entropy_weight  #导入原始的entropy_weight.py文件
import pandas as pddt= pd.read_excel(r"D:\data.xlsx",sheet_name='副本')
dt = dt.iloc[:,3:6].dropna()
dt.columns = ['字段1','字段2','字段3']# 7. 调用 entropy_weight里的函数cal_weight
w,S = entropy_weight.cal_weight(dt)  
w.index = dt.columns
w.columns = ['weight']
S.columns = ['score']
print('指标权重\n',w,'\n')
print('样本综合得分\n',S)  
print('\n计算完成!')

在这里插入图片描述


http://www.hkcw.cn/article/IKrYEKcPUv.shtml

相关文章

环赛里木湖公路自行车赛开赛 速度与激情点燃丝路热土

5月31日上午10时,中国新疆第十七届环赛里木湖(国际)公路自行车赛在精河县鸣枪开赛。首段比赛全长83.1公里,以速度与激情点燃了“中国枸杞之乡”精河县的丝路热土。骑手们从精河县出发,沿精阿高速疾驰,穿越艾比湖湿地和甘家湖梭梭林国家级自然保护区。开赛后仅10分钟,在顺…

南京大学通报施工方偷窃物品 施工单位被罚2000元

5月29日,南京大学基本建设处发布了一份关于对南京诚善科技有限公司执行合同违约金的通报。通报指出,南京大学三校区公共区域饮水机采购及安装项目的施工单位南京诚善科技有限公司的一名员工于5月13日在学校宿舍楼内偷窃学生物品。根据施工合同相关规定并经处办公会研究确认,…

java 反射 枚举与lambda表达式

目录 一.反射 1.概念:在运⾏时检查、访问和修改类、接⼝、字段和⽅法的机制 2.Class类 3.反射相关的类型 4.各类型对应的方法 ​编辑 5.代码示例 (1).class类方法 (2).Field类方法 (3).Constructor类方法 (4).Method类方法 6.总结 二.枚举 1.概念&#x…

【AI大模型】Ollama部署本地大模型DeepSeek-R1,交互界面Open-WebUI,RagFlow构建私有知识库

文章目录 DeepSeek介绍公司背景核心技术产品与服务应用场景优势与特点访问与体验各个DeepSeek-R系列模型的硬件需求和适用场景 Ollama主要特点优势应用场景安装和使用配置环境变量总结 安装open-webui下载和安装docker desktop配置镜像源安装open-webui运行和使用 RagFlow介绍主…

DeepSeek:全栈开发者视角下的AI革命者

无论是想要学习人工智能当做主业营收,还是像我一样作为开发工程师但依然要了解这个颠覆开发的时代宠儿,都有必要了解、学习一下人工智能。 近期发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,入行门槛低&#x…

什么是贝叶斯优化(Bayesian Optimization)?

贝叶斯最优化(Bayesian Optimization)是一种用于函数全局最优化的策略,特别适用于那些计算代价昂贵的黑箱函数(如机器学习模型的超参数调优)。其核心思想是通过构建一个代理模型(通常是高斯过程或随机森林&…

Spring AI+DeepSeek快速构建AI智能机器人

引言 在AI技术蓬勃发展的当下,Spring生态推出了Spring AI项目,为Java开发者提供了便捷的AI集成方案。本文将演示如何用Spring AIDeepSeek V3 快速搭建一个具备自然语言处理能力的智能对话机器人。 一、环境准备 JDK 17 Maven/Gradle构建工具 DeepSe…

【大模型科普】大模型:人工智能的前沿(一文读懂大模型)

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能(AI)通过算法模拟人类智能,利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络(如ChatGPT&…

借用AI工具(cursor/vscode) 调试matlab代码(2025.4最新实测)

本文实测环境:MATLAB 2025a Windows 11 本文亮点:无需重写Python!用AI直接优化现有MATLAB工程 一、AI调试MATLAB的紧迫性 因为matlab无法内置ai 工具 ,别人都有的不能out了 另外说一声matlba2025a已经很改版很多了,与…

5 分钟用满血 DeepSeek R1 搭建个人 AI 知识库(含本地部署)

最近很多朋友都在问:怎么本地部署 DeepSeek 搭建个人知识库。 老实说,如果你不是为了研究技术,或者确实需要保护涉密数据,我真不建议去折腾本地部署。 为什么呢? 目前 Ollama 从 1.5B 到 70B 都只是把 R1 的推理能力提炼到 Qwen 和 Llama 的蒸馏版本上。 虽说性能是提升…

灰狼优化算法(GWO)(含ai创作)

GWO简介 灰狼优化算法(Grey Wolf Optimizer,GWO)是一种模仿灰狼狩猎行为的群体智能优化算法,由Seyedali Mirjalili等人在2014年提出。这种算法主要模拟了灰狼的社会等级结构和狩猎策略,用于解决各种优化问题。 在灰狼…

5步掌握MCP HTTP模式部署:从零开始搭建你的AI“邮局”!

🔥关注墨瑾轩,带你探索编程的奥秘!🚀 🔥超萌技术攻略,轻松晋级编程高手🚀 🔥技术宝库已备好,就等你来挖掘🚀 🔥订阅墨瑾轩,智趣学习不…

基于DeepSeek-Coder,实现Microi吾码低代码平台AI代码辅助生成的思路设想【辅助代码生成】

文章目录 引言一、整体架构设计二、实现流程与关键技术1. 构建领域数据集2. 模型训练与微调3. 生成代码的安全控制4. 平台集成与交互设计 三、效果优化与评估1. 效果展示2. 评估指标 四、未来优化方向结语 引言 低代码开发平台(Microi吾码)通过可视化交…

【DeepSeek+即梦AI:零基础生成专业级AI图片全流程指南(2025实战版)】

第一部分:工具认知篇——认识你的数字画笔 1.1 工具定位与核心价值 (讲师开场白)各位同学好,今天我们要解锁的是AI创作领域最具生产力的组合工具——DeepSeek+即梦AI。就像画家需要画笔与颜料,这对组合就是你的数字创作套装: • DeepSeek:国内顶尖的智能提示词工程师 …

【Ai学习】利用扣子(Coze)简单搭建图像生成工作流(小白初学版)

开始之前我们先了解一下我们准备使用的工具。 什么是扣子(Coze)? 官网链接:扣子 扣子(Coze)是一个开源的AI工具开发平台,提供了丰富的API和简单易用的界面,帮助用户快速搭建各种A…

AIGC时代——语义化AI驱动器:提示词的未来图景与技术深潜

文章目录 一、技术范式重构:从指令集到语义认知网络1.1 多模态语义解析器的进化路径1.2 提示词工程的认知分层 二、交互革命:从提示词到意图理解2.1 自然语言交互的认知进化2.2 专业领域的认知增强 三、未来技术图谱:2025-2030演进路线3.1 20…

【AI 大模型】LlamaIndex 大模型开发框架 ② ( LlamaIndex 可配置的 LLM 类型 | LlamaIndex 可配置的 文本向量模型 类型 )

文章目录 一、LlamaIndex 可配置的 LLM 类型1、云端 API 类型 LLM2、本地部署 类型 LLM3、混合部署 LLM4、错误示例 - 设置 云端 DeepSeek 大模型 二、LlamaIndex 可配置的 文本向量模型 类型1、云端 文本向量模型2、本地部署 文本向量模型3、适配器微调模型 AdapterEmbeddingM…

云端微光,AI启航:低代码开发的智造未来

文章目录 前言一、引言:技术浪潮中的个人视角初次体验腾讯云开发 Copilot1.1 低代码的时代机遇1.1.1 为什么低代码如此重要? 1.2 AI 的引入:革新的力量1.1.2 Copilot 的亮点 1.3 初学者的视角1.3.1 Copilot 带来的改变 二、体验记录&#xff…

OCR+AI双引擎驱动:手把手教学构建智能财报分析系统

在金融行业中,财报分析是帮助企业和投资者做出决策的关键环节。随着科技的快速发展,自动化、智能化的财报分析变得越来越重要。传统的人工财报分析不仅费时费力,而且容易受到人为错误的影响,因此企业急需借助先进的技术来提高效率…

秒杀系统—4.第二版升级优化的技术文档二

大纲 7.秒杀系统的秒杀活动服务实现 (1)数据库表设计 (2)秒杀活动状态机 (3)添加秒杀活动 (4)删除秒杀活动 (5)修改秒杀活动 (6)后台查询秒杀活动 (7)前台查询秒杀活动 (8)查询秒杀商品的销售进度 (9)秒杀活动添加秒杀商品 (10)秒杀活动删除秒杀商品 (11)触发渲染秒…