将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

MLNX_OFED 5.4-3.7.5.0 驱动安装:银河麒麟V10SP2 ARM 内核升级后编译避坑 3 步

本文详细介绍了在银河麒麟V10SP2 ARM环境下安装MLNX_OFED 5.4-3.7.5.0驱动的完整流程,包括内核升级后的驱动兼容性挑战、编译环境准备、分步编译与安装流程以及性能优化与故障排查。特别针对国产化ARM服务器(如华为Atlas系列)提供了实用的解决方案和常见问题处理建议,帮助用户顺利完成mlnx网卡驱动的安装与配置。

weixin_29184075的博客 406

从零到一:手把手教你用Verilog在FPGA上构建自己的FFT处理器(不依赖IP核)

本文详细介绍了如何从零开始使用Verilog在FPGA上构建256点FFT处理器,不依赖商业IP核。内容涵盖FFT算法基础、蝶形运算单元设计、整体架构实现、时序收敛优化策略以及测试验证方法,重点提升FPGA上算法部署的运行效率与资源利用率。

vv45678的博客 822

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

解读Autoware.Universe规划模块:Behavior Path Planner

Behavior Path Planner是一个基于行为生成不同形态路径的路径规划器,负责生成 基于交通状况的路径(path), 车辆可以移动的可行驶区域(drivable area)(在路径消息中定义), 将被发送到车辆接口的转向信号(turn signal) 命令。

策 5491

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

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

weixin_39614011的博客 1311

Unity微信小游戏资源管理实战:YooAsset的Tag与Group策略精讲

本文深入解析了在Unity微信小游戏开发中,如何利用YooAsset的Tag与Group策略进行精细化资源管理。通过实战案例,详细阐述了如何通过Tag实现核心资源的必下与额外资源的按需加载,并借助Collector的合理打包策略,实现热更新包体最小化,从而有效解决加载慢、更新流量大的痛点,最终提升玩家体验。

weixin_29012677的博客 270

测绘无人船避坑指南:云卓H12Pro遥控器接海康摄像头,从网络设置到RTSP流延迟优化全流程

本文详细解析了测绘无人船视频子系统的优化方案,重点介绍海康威视摄像头与云卓H12Pro遥控器的深度适配流程。从网络设置到RTSP流延迟优化,提供了一套经过实测的低延迟(<200ms)解决方案,适用于复杂水域环境下的测绘任务。

weixin_30415113的博客 627

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

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

weixin_34742806的博客 1711

Simplicity Studio V5与EFR32BG22蓝牙开发环境实战指南

本文详细介绍了Simplicity Studio V5集成开发环境与EFR32BG22蓝牙芯片的开发实战指南。内容涵盖开发环境安装、SDK配置、项目创建、调试烧录、外设驱动集成及常见问题解决方案,帮助开发者快速上手物联网蓝牙应用开发,并充分利用EFR32BG22的低功耗与高集成度特性。

v5w6x的博客 320

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

模型压缩技术:剪枝、量化与知识蒸馏实战

模型压缩技术:剪枝、量化与知识蒸馏实战,在深度学习领域,模型的性能往往与模型的规模紧密相关,更大的模型通常能学习到更复杂的模式,从而在任务中取得更好的效果。然而,随着模型规模的不断增大,其在实际应用中面临着诸多挑战,如内存占用高、计算资源需求大、推理速度慢等问题,这使得在资源受限的设备(如移动设备、嵌入式设备)上部署变得困难重重。模型压缩技术应运而生,它旨在在尽可能保持模型性能的前提下,通过各种方法减少模型的参数数量和计算量,提高模型的效率和可部署性。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 5万+

【异常】安装OpenClaw遇到 Windows环境pnpm安装node-llama-cpp postinstall生命周期脚本执行失败完整解决方案

摘要: Windows环境下使用pnpm安装node-llama-cpp时,postinstall脚本执行失败(错误码3221225477),主要因缺少C++编译工具链或预构建二进制下载失败。解决方案: 基础排查:确保管理员权限、Node.js ≥18、路径无中文; 安装编译工具:推荐Visual Studio的“C++桌面开发”组件或windows-build-tools; 环境变量配置:强制CPU模式+国内镜像(NODE_LLAMA_CPP_FORCE_CPU=true,镜像地址替换为国内源); pnp

奶爸的编程之路,也就一周冷个三天 619

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

py文件封装为库文件

hutaotaotao的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

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

Linshaodan520的博客 3383

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

将.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、付费专栏及课程。

余额充值