当前位置: 首页 > article >正文

C#调用Python的函数(编译为pyd,避免源码泄露)

背景介绍:

        在一个项目中,我需要在WinForm程序中调用一个图像高清化的Python代码。起初我想把Python代码用C#语言重写一遍,因为这段代码中只涉及了OpenCV和Numpy的一些调用,而这些包都可以找到对应的.Net版本,实现起来应该不难。可是时间有限,为了保证复现效果与原版代码完全一致,我决定通过C#去调用Python的代码。

实现效果:

        将Python代码编译为pyd动态库,在C#中直接调用Python的函数,经过对比,代码执行效果和速度与Python环境中完全一致,pyd文件还避免了python源码的泄露。

实现步骤:

1. 在Python环境中安装Cython和setuptools。

2. 准备好需要打包的Python代码,并在同目录中创建setup.py,其代码如下:

from setuptools import setup
from Cython.Build import cythonize

setup(
    ext_modules=cythonize("需要编译的python文件名.py")
)

3. 在当前目录中运行

python setup.py build_ext --inplace

        这里有两点需要注意:首先是电脑上必须要有C++的编译器,由于我是使用的VS,所以在VS中添加C++的工作负载即可。其次是被编译的python文件中空格和Tab不要混用,否则虽然代码可能在python环境中运行没有问题,但编译时会报错。


http://www.kler.cn/a/542438.html

相关文章:

  • 【原创精品】基于Springboot3+Vue3的学习计划管理系统
  • 零成本搭建私人图床教程:CloudFlare R2 + PicGo 完整方案
  • Kafka的消费消息是如何传递的?
  • 服务器ip被反垃圾列为黑名单
  • C语言中的共用体(Union):嵌入式开发中的节省内存利器
  • DeepSeek为何能爆火
  • 朝天椒USB服务器:破解银企直连中Ukey管理难题
  • 算法-反转链表
  • MATLAB电机四阶轨迹规划考虑jerk、Djerk
  • MarsCode AI插件在IntelliJ IDEA中使用
  • 2025最新版Node.js下载安装~保姆级教程
  • Bash (Bourne-Again Shell)、Zsh (Z Shell)
  • 【AI-28】RAG的深入浅出
  • OpenCV2D 特征框架 (19)目标检测类cv::CascadeClassifier的使用
  • 基于Win XDMA的PCIE 2.0 X8速率不足原因分析与解决方案
  • 深度学习中的梯度相关问题
  • Python----PyQt开发(PyQt基础,环境搭建,Pycharm中PyQttools工具配置,第一个PyQt程序)
  • 记录docker 卡住不动了
  • AIOS: 一个大模型驱动的Multi-Agent操作系统设计与Code分析
  • Ansible中playbook的变量
  • DeepSeek与蓝耘智算平台:人工智能与高效算力的协同革命
  • 使用verilog 实现cordic 算法 ---- 向量模式
  • FAST_LIVO2初次安装编译
  • STM32 HAL库 SPI通讯(C语言)
  • 阿里云百炼初探DeepSeek模型调用
  • 【Pytorch实战教程】深入了解 PyTorch 中的 SummaryWriter