将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

手把手教你学Simulink--基于火电发电系统的场景实例:燃煤发电机组的锅炉-汽轮机协调控制仿真

本文介绍了使用Simulink构建燃煤发电机组锅炉-汽轮机协调控制系统的仿真方法。系统包含锅炉子系统、汽轮机子系统和协调控制器三大模块,通过传递函数建模和PID控制策略实现协调控制。详细说明了从模型创建、子系统设置到控制器设计的完整流程,包括燃料供给、汽轮机模型和数据处理等关键环节。最后通过性能评估验证系统响应速度、参数稳定性和效率等指标。该仿真方法为火电系统控制策略设计和优化提供了有效工具。

MHD0815的博客 1153

PWM调节DCDC参数计算原理

SOC芯片的核电压、GPU电压、NPU电压、GPU电压等,都会根据性能和实际应用场景来进行电压和频率的调整。 即动态电压频率调整DVFS(Dynamic Voltage and Frequency scaling),优化性能和功耗。

电子绿洲的博客 3164

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

RK3588开发板DDR频率上不去?手把手教你用ddrbin_tool降频调优(附完整配置流程)

本文详细介绍了RK3588开发板DDR频率调优的完整解决方案,重点使用ddrbin_tool工具进行降频配置。从硬件原理分析到实战操作,包括参数导出、频率调整、二进制生成及烧录验证,帮助开发者解决DDR高频不稳定问题,提升系统可靠性。适用于嵌入式开发、工业控制等场景。

weixin_42713608的博客 545

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

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

weixin_39614011的博客 1311

人形机器人核心架构梳理

定义:机器人是能进行运动、操纵或定位且具有一定程度自主能力的可编程执行机构。按外在形态分类可分为传统机器人和人形机器人,其中人形机器人是一种利用人工智能和机器人技术制造的具有类似人类外观和行为的机器人。

小海聊智造 1万+

【Ubuntu】SMBus Host controller not enabled(虚拟机进入不了图形界面)

SMBus Host controller not enabled(虚拟机进入不了图形界面)

Cappuccino Blog 4万+

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

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

weixin_34742806的博客 1711

MATLAB打开.m文件乱码解决办法

Matlab打开.m文件出现中文乱码问题,是因为Matlab存在两种编码格式:GBK和UTF-8,而不同版本的Matlab编码格式可能不统一,因此在不同版本的Matlab打开文件,由于编码格式的改变,会导致注释乱码。 1.查看你的Matlab的文件编码方式,在Matlab的命令行窗口输入feature('locale') ,如下图,可以看到默认编码为GBK,那问题就变成了将Matlab的文件编码方式GBK修改成UTF-8; 2.找到你的Matlab安装目录bin文件夹下的lcdata_utf.

zhugby的博客 4万+

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

Far planner 代码系列(35)动态障碍物预处理_激光雷达部分

主要讲解动态障碍物在激光雷达部分的剔除机制

博客 1059

GEE土地分类:一文读懂精度评定—混淆矩阵confusion matrix、整体精度OA、用户者精度、生产者精度、kappa系数和F1score系数含案例

本文介绍了如何在 Google Earth Engine (GEE) 中构建和分析混淆矩阵,以评估分类模型的性能。首先,通过 ee.Array 构建混淆矩阵,并展示了如何指定自定义类标签。接着,计算了多种性能指标,包括准确率、Kappa 值、F1-score、消费者准确率和生产者准确率。此外,还演示了如何计算不同类别的 F1-score。最后,通过一个实际案例,展示了如何利用 GEE 进行土地分类,并评估分类器的性能,包括训练和验证样本的准确率、Kappa 值等指标。这些步骤帮助用户理解模型的优缺点,并进行

此星光明博客 443

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

py文件封装为库文件

hutaotaotao的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

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

Linshaodan520的博客 3383

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

余额充值