python源码编译—Cython隐藏源码(windows)

文章目录

    • 1、前言
    • 2、依赖
    • 3、操作示例

1、前言

  很多时候,我们想提供我们的程序给别人使用,但又不想让别人看到我们的源代码,这样我们就需要对python代码进行编译,然后打包发送给别人使用。

2、依赖

  安装Visual Studio Installer。为了能够编译 Cython 项目,你需要确保安装了 C++ 编译工具,特别是 MSVC(Microsoft Visual C++)工具集。

具体步骤如下:

  • 在 Visual Studio Installer 中,点击页面下方的“从可用中选择”按钮。
  • 在弹出的选项中,选择 Desktop development with C++(适用于桌面开发的C++)。
  • 确保勾选包含 MSVC(Microsoft C++ 编译工具) 和 Windows 10 SDK,这是编译所需的核心工具。

3、操作示例

  编写setup.py文件,遍历文件夹,将所有需要编译的文件进行编译。

from setuptools import setup, Extension, find_packages
from Cython.Build import cythonize
import os# 定义需要编译的所有模块
extensions = []
for root, dirs, files in os.walk("."):for file in files:if file.endswith(".py") and file not in  ["test_api.py", "api.py"]:  # 保留test_api作为调用端口full_path = os.path.join(root, file)# 转换为模块路径,去掉首个“./”以防止不规范路径module_name = os.path.relpath(full_path, start=".").replace("/", ".").replace("\\", ".")[:-3]extensions.append(Extension(module_name, [full_path]))# 设置编译参数
setup(name="my_project",ext_modules=cythonize(extensions, language_level="3"),packages=find_packages()
)

  步骤一:在项目文件夹根目录下,打开命令行,运行以下代码,即可生成。将文件夹下同名的.c和.py文件删除,只保留.pyd即完成加密。你当然可以就把删除py之后的包分享给别人使用。但是可以更进一步,

python setup.py build_ext --inplace

在这里插入图片描述

  步骤二:(删除.py以及.c文件之后)继续运行以下代码,即可生成whl文件。将whl文件发送给共享的人,使用pip install your_project.whl安装即可使用。

python setup.py bdist_wheel

在这里插入图片描述

  • 安装whl库
    在这里插入图片描述
  • 测试调用
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/457798.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp移动端优惠券! 附源码!!!!

本文为常见的移动端uniapp优惠券,共有6种优惠券样式(参考了常见的优惠券),文本内容仅为示例,您可在此基础上调整为你想要的文本 预览效果 通过模拟数据,实现点击使用优惠券让其变为灰色的效果(模…

手机柔性屏全贴合视觉应用

在高科技日新月异的今天,手机柔性显示屏作为智能手机市场的新宠,以其独特的可弯曲、轻薄及高耐用性特性引领着行业潮流。然而,在利用贴合机加工这些先进显示屏的过程中,仍面临着诸多技术挑战。其中,高精度对位、应力控…

8. 数据结构—排序

目录 一、插入排序 1) 直接插入排序 优化: 折半插入排序 2)希尔排序 二、 交换排序 1)冒泡排序 2)快速排序——递归实现 三、选择排序 1)简单选择排序 2)堆排序 四、归并排序 五. 各…

论文笔记(五十一)Challenges for Monocular 6-D Object Pose Estimation in Robotics

Challenges for Monocular 6-D Object Pose Estimation in Robotics 文章概括摘要I. 介绍II. 正在进行的研究和常见数据集A. 数据集B. 正在进行的研究问题 III. 未来挑战A. 物体本体B. 可变形和关节物体C. 场景级一致性D. 基准现实性E. 环境影响F. 通用物体操控 IV. 结论 Estim…

Telephony中ITelephony的AIDL调用关系

以Android14.0源码讲解 ITelephony来自framework下的com.android.internal.telephony包下 frameworks/base/telephony/java/com/android/internal/telephony/ITelephony.aidl这个接口用于与Phone交互的界面,主要由TelephonyManager类使用,一些地方仍在…

多元线性回归【正规方程/sklearn】

多元线性回归【正规方程/sklearn】 1. 基本概念1.1 线性回归1.2 一元简单线性回归1.3 最优解1.4 多元线性回归 2. 正规方程求最优解2.1 线性回归的损失函数(最小二乘法)2.2 推导正规方程2.3 正规方程练习2.4 使用sklearn计算多元线性方程2.5 凸函数 3. 线…

InternVL-1.1: Enhance Chinese and OCR Capabilities

Blog:https://internvl.github.io/blog/2024-01-24-InternVL-1.1/ 指南:https://internvl.readthedocs.io/en/latest/internvl1.1/introduction.html InternVL-Chat-V1-1 结构类似于 LLaVA,包括一个 ViT、一个 MLP 投影器和一个 LLM。如上图所示,我们通过一个简单的 MLP …

JAVA篇之类和对象

目录 一. 面向对象 1.1 面向对象和面向过程 二. 类的定义和使用 2.1 什么是类 2.2 类的定义格式 三. 类的实例化 四. this引用 4.1 this引用的作用 五. 构造方法 5.1 构造方法重载 5.2 通过this调用其他构造方法 5.3 默认初始化 结语 一. 面向对象 Java 是一门面向对…

面向对象与设计模式第二节:设计模式实战

第三章:面向对象与设计模式 第二节:设计模式实战 设计模式是软件工程中的一项重要实践,它为解决常见的设计问题提供了经过验证的解决方案。本课将深入探讨几种常见的设计模式,并通过实际案例分析其在项目中的应用。 1. 每种设计…

JavaEE初阶---文件IO总结

文章目录 1.文件初识2.java针对于文件的操作2.1文件系统的操作---file类2.2文件内容的操作---流对象的分类2.4字符流的操作》文本文件2.4.1异常的说明2.4.2第一种文件内容的读取方式2.4.3第二种读取方式2.4.4close的方法的介绍2.4.5close的使用优化操作2.4.6内容的写入 2.3字节…

无需依赖闭源模型!司南CompassJudger为AI评测带来新选择

前沿科技速递🚀 近期,司南OpenCompass团队发布了一款开源的全能评价模型——CompassJudger。这是全球首个全能开源的 All-in-one Judge Model,不仅支持主流的双向对比(pair-wise)和单向评分(point-wise&…

软件工程--需求分析与用例模型

面向对象分析(ObjectOrientedAnalysis,简称OOA) 分析和理解问题域,找出描述问题域所需的类和对象,分析它们的内部构成和外部关系,建立独立于实现的OOA模型,暂时忽略与系统实现有关的问题。 主要使用UML中的以下几种图…

全球知名度最高的华人起名大师颜廷利:世界顶级思想哲学教育家

全国给孩子起名最好的大师颜廷利教授在其最新的哲学探索中,提出了《升命学说》这一前沿理论观点,该理论不仅深刻地回应了古今中外众多哲学流派和思想体系的精髓,还巧妙地融合了实用主义、理想主义以及经验主义的核心理念。通过这一独特的视角…

我准备写一份Stable Diffusion入门指南-part1

我准备写个SD自学指南,当然也是第一次写,可能有点凌乱,后续我会持续更新不断优化,我是生产队的驴,欢迎监督。 Stable Diffusion WebUI 入门指南 Stable Diffusion WebUI 是一款基于 Stable Diffusion 模型的用户界面…

力扣 中等 740.删除并获得点数

文章目录 题目介绍题解 题目介绍 题解 由题意可知,在选择了数组中元素 a 后,该元素以及所有等于 a−1 和 a1 的元素都会从数组中删去,并获得 a 的点数。若还有多个值为 a的元素,由于所有等于 a−1 或 a1 的元素已经被删除&#x…

三种材料的金相图及金相图解析材料

3. 二.不同温度下三种材料(铸铁,铝,低碳钢)的低温脆性,相关材料,文献引用 三.三种材料在汽车制造中可能的应用 (如捷豹用铝合金降低车身重量).三种材料哪个材…

Linux: Shell编程入门

Shell 编程入门 1 ) Shell 概念 shell 是 在英语中 壳, 外壳的意思可以把它想象成嵌入在linux这样的操作系统里面的一个微型的编程语言不像C语言, C 或 Java 等编程语言那么完整,它可以帮我们完成很多自动化任务例如保存数据监测系统的负载等等,我们同样…

AI博士人手10篇顶会,遭质疑。。。

B站:啥都会一点的研究生公众号:啥都会一点的研究生 AI科技圈又发生了啥新鲜事? “稚晖君”灵犀X1全球开源,推动人形机器人技术共享 智元机器人宣布其人形机器人灵犀X1正式面向全球开源,提供了超过1.2GB的软硬件全套…

【LeetCode】11.盛最多水的容器

思路: 利用双指针法进行移动,一个在头一个在尾,此时宽度最宽,当宽度缩小时,高度发生变化,从而可以找到最大值。 代码: int maxArea(int* height, int heightSize) {int* left height;int* …

android——渐变色

1、xml的方式实现渐变色 效果图&#xff1a; xml的代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools…