将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

使用基于物质点法(MPM)的Anura3D模拟沙柱坍塌

本博客使用开源软件Anura3D软件模拟了一个沙柱坍塌的过程,这个软件是基于基于物质点法(MPM)设计的

weixin_59902634的博客 4045

2.6 SST的核心性能指标体系

本文构建了固态变压器(SST)的核心性能指标体系,涵盖电气性能、可靠性、经济性和环境适配性四大类指标。电气性能指标包括运行效率(≥97%)、功率密度(≥900kVA/m³)、谐波畸变率(≤3%)等关键参数;可靠性指标设定MTBF≥43800h、年均故障率≤1.2次/年等标准;经济性指标对比分析了初始购置成本(45-55万元)和全生命周期成本(48-55万元);环境适配性指标则明确了温度、海拔等工况要求。该体系采用量化公式和国标限值,为SST的性能测试、选型和优化提供了统一标准。

技术工作者 603

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

基于DFT的scanshift sdc模板(DFT)

摘要:本文详细介绍了DFT测试模式下的SDC约束方法。

murphyrong的博客 888

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

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

weixin_39614011的博客 1311

高速设计注意事项总结——MDI篇

在以太网高速通信系统中,MDI(Medium Dependent Interface,介质相关接口)是连接物理层芯片(PHY)与传输介质(如网线)的关键接口,其设计直接影响信号完整性、传输速率和抗干扰能力。本文围绕 MDI 及 RJ45 接口电路、关键参数、设计与布线要点展开,为高速以太网设计提供参考。本文包含MDI 及 RJ45 接口电路组成、电路设计注意事项、布局布线要求等内容

qq_16237389的博客 1446

【规则引擎连载3】 WebSphere ILOG JRules 开发——新建一个规则项目

规则项目依赖于bom,bom来自于一个Java项目,所以在建规则项目之前,需要先建立一个Java项目,也就是建模。 说明:原则上是一个规则项目,一个bom。如果规则项目很多,并且每个规则项目的bom都是一样的,那么可以将bom提取出来,单独作为一个项目,这样减少不必要的重复操作,减少维护成本,降低出错几率。这里逐步讲解两种方法来创建规则项目,推荐第二种。 本文主要建立两种规则项目与bom之间的关系,编写相关的规则内容,如操作规则、规则流、决策表等,在后续文章中详细讲解 。

manman的分享 2331

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

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

weixin_34742806的博客 1711

FPGA面试题目笔记(一)——FPGA开发流程、亚稳态和竞争冒险、建立保持时间、异步FIFO深度等

同步异步电路、同步异步复位、时钟偏移和抖动、最小工作周期计算、触发器锁存器

H19981118的博客 1万+

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

《UDS/OBD诊断需求编辑工具》总目录

目录 1 基于CANdela Studio编辑CDD诊断描述文件 2 基于ODX Studio编辑ODX/PDX文件 2.1 编辑ODX-D诊断描述文件 2.2 编辑ODX-F刷写软件 该专栏主要负责介绍CANdela Studio和ODX Studio编辑CDD/ODX/PDX诊断描述文件。 1 基于CANdela Studio编辑CDD诊断描述文件 2 基于ODX Studio编辑ODX/PDX文件 【ODX介绍 】-1- 标准梳理 【ODX介绍】 -2-如何手..

「汽车电子助手」的博客 1万+

如何使用PostgreSQL数据库进行数据仓库的ETL操作

本文旨在为数据工程师、数据库管理员和分析师提供使用PostgreSQL进行数据仓库ETL操作的全面指南。ETL流程的基本原理PostgreSQL在ETL中的独特优势实际ETL实现的技术细节性能优化和最佳实践常见问题的解决方案首先介绍ETL和PostgreSQL的基本概念然后深入探讨核心技术和实现方法接着提供实际案例和代码示例最后讨论优化技巧和未来趋势ETL:提取(Extract)、转换(Transform)、加载(Load)的缩写,描述数据从源系统移动到目标数据仓库的过程。

2502_91592937的博客 873

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

py文件封装为库文件

hutaotaotao的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

Linshaodan520的博客 3383

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

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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

余额充值