成功解决windows下将.pyx文件编译成.pyd文件

news/2024/11/2 17:29:05/

在linux上正常跑通的算法,搬到windows下使用就报错了
原来是其中涉及到.pyx文件的编译
在linux下.pyx会被编译成.so的文件,但是在windows下是无法使用.so文件的
需要重新编译成windows下的.pyd格式的才可以直接将python模块成功导入到算法中

所以需要解决的问题就是在windows下将.pyx编译成.pyd格式的文件
以下图所示文件夹下的pyx文件为例
在这里插入图片描述
test文件夹下包含的文件为
在这里插入图片描述
现在需要将dse_helper.pyx文件编译出对应的.pyd文件

第一步

创建PyxConvertPyd.py文件
并将其放在与dsepruning文件夹所在的目录下,如下图
在这里插入图片描述
代码如下

import sys
import numpy as np
A=sys.path.insert(0, "..")
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
from Cython.Distutils import build_extsetup(ext_modules=cythonize('./dsepruning/dse_helper.pyx'),# 这句一定要有,不然只编译C代码,无法编译出pyd文件include_dirs=[np.get_include()]
)

第二步

在命令行中,切换到PyxConvertPyd.py所在的路径,
然后执行编译命令

python PyxConvertPyd.py build_ext --inplace

如果没有安装Visual C++ tools会报如下错误
在这里插入图片描述
此时需要安装VisualCppBuildTools 2015
如果从官网下载的话安装会报如下错误
visual studio C++ build tools 提示安装包丢失或损坏
在这里插入图片描述
后来找到了另外一个安装包,成功安装
在这里插入图片描述
直接双击运行.exe文件即可。
在这里插入图片描述
安装包放在了网盘,可通过个人主页左下角找到下载方式
安装成功后,就可以再次执行编译命令了
在这里插入图片描述
此时就可以成功编译了
会生成对应的.pyd文件和.c文件,同时还有一个build文件夹

然后就可以愉快地运行算法了!


http://www.ppmy.cn/news/147832.html

相关文章

基于SSM的疫情物资管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

160套小程序源码

源码列表如下: AppleMusic (知乎日报) 微信小程序 d artand 今日更新求职招聘类 医药网 口碑外卖点餐 城市天气 外卖小程序 定位天气 家居在线 微信小程序-大好商城,wechat-weapp 微信小程序的掘金信息流 微信跳一跳小游戏源码 微票源码-demo 急救应急处…

RabbitMQ常见面试题

参考:javaguide、程序员大彬 1.介绍下消息队列? 消息队列(Message Queue),简称为MQ,是分布式系统中重要的组件消息队列主要解决了应用耦合、异步处理、流量削锋等问题目前使用比较多的Mq是RabbitMQ、RocketMQ、ActiveMQ、Kafka。Kafka主要在大数据领域用的多,用来处理日…

WPF 关于Binding

命名空间:System.Windows.Data 作用:提供对绑定定义的高级访问,该绑定连接绑定目标对象(通常为 WPF 元素)的属性和任何数据源(例如数据库、XML 文件,或包含数据的任何对象)。在WPF中被封装成一个…

java.net.UnknownHostException 解决方法

今天在调试接口的时候,代码都写好了,一运行,发现报错 java.net.UnknownHostException 错误,从字面上看是请求目标的服务连不上。这是什么原因呢? 原因: 手机没有连接上网络 经过排查,发现测试手…

vitis自定义IP编译报错解决方法

vitis这个bug直到2021.1还是没有解决,不知道新版本会不会解决。哎。。 现将临时解决方案记录如下: 当遇到自定义IP时,vitis在编译时会报下面这种错误。完全不知道原因。 "Compiling my_ip..." arm-xilinx-eabi-gcc.exe: error: …

KV260编译SmartCam应用

在KV260 AI入门开发套件简介中提到KV260有四个参考例程,smartcam是其中之一,下面介绍一下如何使用Petalinux编译smartcam应用,以及如何编译smartcam,使用vivado打开工程。 使用Petalinux编译smartcam应用 update the eSDK peta…

【转】Tomato-shibby无线中继(无线级联)

【本教程基于tomato-K26-1.28.RT-N5x-MIPSR2-116-Max原版编写】 1.假设你的上级路由器的ip地址为192.168.1.1,那么你要设置你的TT的路由器地址(br0)为192.168.2.1,不要与上级路由器的在一个IP段,设置WAN方式为DHCP 2.…