将py文件编译成pyd(setup模块)

一键编译py成pyd 特定需求下,将py编译称pyd进行使用 阅读详情
AI摘要

本文详细介绍如何在Win10环境下使用Cython模块将Python源文件(.py)编译成扩展模块(.pyd),包括环境配置、编译步骤、常见错误解决及pyd文件的使用方法。

一、将单个py文件打包成pyd

1、环境

win10、python3.7.4

2、安装cython模块

pip install cython

3、编写setup.py文件

如:
speakHello.py

def aa():
    print('hello world')

hello.py

import sys, os
sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__))))
from qfs import speakHello
speakHello.aa()

setup.py

from distutils.core import setup
from Cython.Build import cythonize

setup(ext_modules=cythonize("speakHello.py"))

4、执行 python setup.py build_ext 命令

会在当前目录下的 ./build/lib.win-amd64-3.7 目录下生成pyd文件: speakHello.cp37-win_amd64.pyd

可以添加 --inplace参数, 直接在当前目录下生成与py文件同名的pyd文件:printHello.cp37-win_amd64.pyd
python setup.py build_ext --inplace

5、使用pyd文件

将文件名修改为 speakHello.pyd , 然后将文件放到当前目录, 删除 speakHello.py
执行: python3 hello.py
输出:hello world

1、pyd文件可以向py文件一样正常导入使用, 在win10上编译后, 在win7同样可以运行。
2、pyd文件无法直接运行, 需要通过导入来运行。对于一个项目来说,可以将pyd导入到项目启动文件中运行, 然后将项目启动文件打包成exe或其他格式的可执行文件。
3、同名的py和pyd并存时, pyd文件会优先被调用。

二、报错及解决

1、“Unable to find vcvarsall.bat”

解决:安装VS
VS下载:https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/?rr=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fcpp%2Fbuild%2Fvscpp-step-0-installation%3Fview%3Dvs-2015
下载 community 版本, 安装时选择安装python开发, 安装完成后重启。
在这里插入图片描述

2 speakHello.py:1:0: ‘qfs.speakHello’ is not a valid module name

将speakHello.py和setup.py都放入到了qfs 文件夹下,在pycharm中python setup.py build_ext --inplace执行,报以上错误

调试错误原因为qfs 文件夹中有__init__.py文件, 删除这个文件即可

参考

https://devblogs.microsoft.com/python/unable-to-find-vcvarsall-bat/#comments
https://blog.baosiqiang.cn/archives/75cf9cb3.html
https://developer.aliyun.com/article/1113536
https://zxkjack123.github.io/cython/cython-hello-world/
https://cython.readthedocs.io/en/latest/src/userguide/external_C_code.html#resolving-naming-conflicts-c-name-specifications

练习:

单个py文件编译为pyd文件:https://download.youkuaiyun.com/download/YPFeime/12186951

将python代码文件转成Cython 编译问题集 仍然会报错 Unknown MS Compiler version XXXX。不知为何,我的电脑死活不能安装上VC,只能用mingw作为编译器。其中1927改为你的Compiler version。 阅读详情

相关推荐

setup.py是什么?

setup.py 文件是一个 python 文件,它的存在表明您要安装的模块/包很可能是使用 Distutils(Python 模块分发标准)打包和分发的。我们还讨论了 setup.py 的基本用途、setup.py 文件中使用的关键字、创建您的第一个 setup.py 文件以及向全世界发布您的包。在本文中,我们将讨论 setup.py、setup.py 的主要用法、setup.py 文件中使用的关键字、编写第一个 setup.py 文件以及将包部署到公众。使用这两个过程,您可以部署setup.py文件。

我的博客,不一样的自我表达 2073

花了两天,终于把 Python 的 setup.py 给整明白了

1. 为什么需要对项目分发打包? 平常我们习惯了使用 pip 来安装一些第三方模块,这个安装过程之所以简单,是因为模块开发者为我们默默地为我们做了所有繁杂的工作,而这个过程就是 打包。 打包,就是将你的源代码进一步封装,并且将所有的项目部署工作都事先安排好,这样使用者拿到后即装即用,不用再操心如何部署的问题(如果你不想对照着一堆部署文档手工操作的话)。 不管你是在工作中,还是业余准备自己写一个可以上传到 PyPI 的项目,你都要学会如何打包你的项目。 Python 发展了这么些年了,项目打包工具也已经很成熟

王炳明 1万+

【py文件加密】将 .py 文件编译成 .pyd 文件(支持批量处理)

py易读(明文),pyc不易读但易被反编译,pyd不易读且不易被反编译(密文)

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 6841

python的构建工具setup.py

一、构建工具setup.py的应用场景 在安装python的相关模块和库时,我们一般使用“pip install 模块名”或者“python setup.py install”,前者是在线安装,会安装该包的相关依赖包;后者是下载源码包然后在本地安装,不会安装该包的相关依赖包。所以在安装普通的python包时,利用pip工具相当简单。但是在如下场景下,使用python se...

adiaoxia8541的博客 1220

ESP32蓝牙广播数据自定义指南:让你的设备更容易被手机发现

本文详细介绍了如何通过自定义ESP32蓝牙广播数据提升设备在手机端的可发现性。从广播数据结构、扫描响应优化到跨平台兼容性设置,提供了全面的技术指南和实战代码示例,帮助开发者解决智能硬件开发中的蓝牙连接难题。

weixin_29172201的博客 272

Codex驱动AEDT完成无线充电仿真——从双线圈建模到三维电磁场动画

本文介绍了一个利用Codex、PyAEDT和Ansys Electronics Desktop 2025 R2实现双线圈无线充电系统自动建模与仿真的案例。通过简化模型(平面线圈+铁氧体磁芯),完成了从参数化建模、电磁场求解到后处理的全流程自动化,获得了耦合系数(k=0.17)、三维电磁场分布及多周期动态可视化效果。研究发现:线圈间距对传输效率影响最大(10-30mm间距时效率从40.2%降至5.57%),横向偏移15mm会使效率下降35%,而磁芯厚度增加带来的效率提升有限(3→7mm仅提高1.67%)。该框

sjjsjjsjjsjjsjj的博客 447

python代码编译成pyd_将py文件编译成pyd(setup模块)

一、将单个py文件打包成pyd1、环境win10、python3.7.42、安装cython模块pip install cython3、编写setup.py文件如:speckHello.pydef aa():print('hello world')12hello.pyimport sys, ossys.path.append(os.path.dirname(os.path.abspath(os.p...

weixin_34847198的博客 3763

【一文读懂】NTN(非地面网络)技术介绍

NTN,即非地面网络,是指利用卫星、高空平台(如无人机、平流层气球等)等非地面通信基础设施来实现全球通信覆盖的网络。在5G时代,NTN主要基于5G标准,特别是5G NR(New Radio)技术,通过卫星通信扩展地面网络的覆盖范围和服务能力。NTN技术的出现和发展,为全球通信带来了新的可能性和挑战。通过不断的技术创新和标准化推进,NTN有望在未来发挥更加重要的作用,为全球用户提供无处不在的通信服务。随着6G时代的到来,我们有理由相信NTN技术将迎来更加广阔的发展前景。

u011376987的博客 1万+

python打包编译成pyd或者_python之setup.py的那些事

今天偶然对setup.py产生了兴趣,以前只知道可以用它来安装包,例如python setup.py build ->python setup.py install.当然前提你下载的这个源码包是压缩的,之前对这个理解并不深,今天偶然看见pip install -e . 的用法,然后串起来想了一下。我的目录结构如上,首先我创建了一个setuptutorial的directory,然后我在下面创...

weixin_39614011的博客 1311

基于STM32F103标准库与DMA的实时音频FFT频谱显示系统设计

本文详细介绍了基于STM32F103芯片与DMA技术实现实时音频FFT频谱显示系统的设计方法。通过标准库驱动和FFT算法处理音频信号,结合OLED显示屏实时绘制音乐频谱,涵盖硬件选型、核心原理、开发环境搭建及性能优化等关键步骤,为数字信号处理应用提供实用参考。

yellow的专栏 777

别再为数据发愁了!盘点5个公开可用的医学图像数据集(含MRI/CT/PET合成任务)

本文详细介绍了5个高质量的公开医学图像数据集,涵盖MRI、CT和PET三大模态,适用于深度学习模型训练和医学图像合成任务。每个数据集均提供下载指南、预处理技巧和PyTorch加载示例,帮助研究人员快速获取和处理数据,解决医学AI开发中的数据瓶颈问题。

weixin_30689307的博客 524

python代码编译成pyd_windows平台下python生成pyd文件的详细方法介绍

本篇文章给大家带来的内容是关于windows平台下python生成 pyd文件的详细方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。Python的文件类型介绍:.py python的源代码文件.pyc Python源代码import后,编译生成的字节码.pyo Python源代码编译优化生成的字节码。pyo比pyc并没有优化多少,只是去掉了断言....

weixin_34742806的博客 1711

【FPGA】安路FPGA下载器驱动安装教程

#来自学渣的问候 最近正在参加19年的FPGA创新设计大赛,然后我们选择了安路(全名:上海安路信息科技有限公司)的 FPGA 开发板。安路算是国产FPGA中还不错的一家,和紫光一样,除了自主生产的FPGA,也开始拥有了自己的编译环境。 好了。言归正传,写这篇博客的原因是,前几天在安装 安路 的编译环境和下载器驱动的时候,出了点问题,弄得心烦意乱。所以打算解决之后写篇博客,避开这个神奇的问题。 首先...

Ninquelote的博客 2万+

windows系统pyx文件转换为pyd文件或html文件

目录配置环境编写setup.py文件生成pyd文件生成html文件 配置环境 1、下载并安装MinGW-w64,将其配置在路径上 2、用pip下载cython: 打开cmd,输入 pip install cython 编写setup.py文件 setup.py文件可以按如下方法编写: from setuptools import setup from Cython.Build import cythonize setup( ext_modules = cythonize( "filen

qq_45404676的博客 1297

手把手教你学Simulink——电机电磁兼容与可靠性场景示例:基于Simulink的电机噪声抑制控制仿真

本文带你完成了电机噪声抑制控制的Simulink仿真,实现了:✅ 揭示了电磁噪声从电流到声音的传递机理✅ 搭建了含死区、固定载波等噪声源的高保真模型随机PWM(消除啸叫)谐振控制器(抑制5/7次嗡鸣)谐波注入(降低THD) ✅ 通过综合方案将噪声降低10 dB以上(感知响度减半!) ✅ 为产品静音品质提升提供可落地的控制方案。

MHD0815的博客 94

2023年12月机器人技术等级考试试卷(三级理论) 试题解析

2023年12月机器人技术等级考试试卷(三级理论) 试题解析

http://www.cierobot.com 4095

【python】将py文件封装为库(pyd文件)

py文件封装为库文件

hutaotaotao的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

利用cython将.py文件编译为.pyd文件

介绍如何用cython库将py文件编译加密为pyd文件

Linshaodan520的博客 3383

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python打包编译成pyd或者,Python .py生成.pyd文件并打包.exe 的注意事项说明

最近用python写了一个小程序,想发布出去让人试用又不想暴露源码,搜索了一下发现将py文件编译成pyd文件就能达到目的。转换过程很简单,但是在调用pyd文件并且打包为单个exe文件的时候遇到一个坑,搞了一天才解决,在这里分享一下。首先安装cython库个人比较喜欢用清华的镜像库,速度快。pip install Cyphton -i https://pypi.tuna.tsinghua.edu.c...

weixin_31140959的博客 3641

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

将.py文件编译成.pyd文件,并对pyd文件调用

1.安装Cython pip intall Cython 2.在.py文件目录下创建setup.py # 脚本文件 from distutils.core import setup from Cython.Build import cythonize setup( name = 'Hello', ext_modules = cythonize("xxxxxx.py"), ) 3.在cmd下运行, python setup.py build_ext --inplace 在Windo

qq_41670429的博客 2085

python调用pyd文件_python的py文件生成pyd文件,pycharm直接调用pyd文件

这段时间做接口自动化测试,用python直接调用接口,sign值是经过系列复杂算法加密后生成的字符串,保密级别高,不能直接以py文件供大家调用~~pyc文件呢,很容易就被反编译了,pyd文件和一般dll类似,不容易被反编译。生成pyd很容易,网上百度一堆堆,但是调用pyd文件会遇到好多错误。在此贴一下生成pyd到调用pyd文件的方法供参考:1.新建一个setup.py文件:# 用cpython生成...

weixin_39799561的博客 1万+

Python将py文件转换为pyd文件

cython的使用

weixin_43054437的博客 5308

py文件编译为pyd文件,并解决pyd文件无法import的问题

【代码】py文件编译为pyd文件,并解决pyd文件无法import的问题。

weixin_45927370的博客 4036

cython编译pyd文件

bash:必须安装或,并勾选C++开发组件。:通常安装gcc,例如在Ubuntu上运行。。验证:在终端输入clang(macOS) 或gcc(Linux) 检查是否安装成功。

m0_73527922的博客 1262

cython把python编译成exe_使用Cython把py转成pyd文件

介绍对于python这门语言来说,本身没有很好的加密方法,就算是pyc和pyo字节码文件也可以很轻松的用软件反编译出来。推荐反编译软件是Easy Python Decompiler。软件的下载地址是:https://sourceforge.net/projects/easypythondecompiler/可以把pyc和pyo字节码文件全部反编译成原来的py文件。所以要想加密py文件有的办法是把p...

weixin_39818264的博客 793

python隐藏源码,生成pyd文件并调用的完整过程

目录​pyd 特点及生成方式​首先需要在 ​demo.py 同目录下新建个 setup.py 文件,具体代码如下在生成之前或许我们需要先做一个事情,那就是安装vs_buildtools在命令行或终端 cd 到这个目录下,输入命令如何调用补充pyc与pyd区别 ​pyd 特点及生成方式​ 我们知道​ ​windows 系统有许多 DLL 后缀的文件,即动态链接库,在运行时链接到调用程序​​。在运行时链接到 DLL 之类的库的主要优点是,它可以促进代码重用,模块化体系结构和更快的程序启动。结果,DLL 在 Wi

独挽离人 2万+
上一篇: python打包与分发(pyinstaller)
下一篇: eclipse创建web项目方法(使用tomcat)
YPFeime
博客等级 码龄9年 19粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值