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

在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_ext

setup(
    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文件夹

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

猜你喜欢

转载自blog.csdn.net/JingpengSun/article/details/130990889