pyx 编译成 pyd

article/2025/9/17 23:31:42

1、编写好py文件,然后将后缀改为pyx
2、编写好setup.py文件
3、在setup.py 文件同目录下打开命令行执行:

python setup.py build_ext --inplace

之后就会生成pyd文件 和C文件

示例:
需要编译成pyd的文件 fast_fib.pyx

import functoolsdef fib1(n):if n in [1, 2]:return 1return fib1(n - 1) + fib1(n - 2)def fib2():a=0b=1def calc():nonlocal a,ba,b = b,a+breturn areturn calc@functools.lru_cache()# 在fibonacci函数上加上装饰器函数functools.lru_cache()
def fib3(n):if n in [1, 2]:return 1return fib3(n - 1) + fib3(n - 2)

编写setup.py

from setuptools import setup
from Cython.Build import cythonizesetup(ext_modules=cythonize('fast_fib.pyx'))

打开命令行执行命令:

python setup.py build_ext --inplace
Microsoft Windows [版本 10.0.17763.2928]
(c) 2018 Microsoft Corporation。保留所有权利。H:\Python27\pythonUpSpeedExc>python setup.py build_ext --inplace
running build_ext
building 'fast_fib' extension
D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IH:\anaconda3\include -IH:\anaconda3\include "-ID:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include" "-ID:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-ID:\Windows Kits\10\include\10.0.17763.0\ucrt" "-ID:\Windows Kits\10\include\10.0.17763.0\shared" "-ID:\Windows Kits\10\include\10.0.17763.0\um" "-ID:\Windows Kits\10\include\10.0.17763.0\winrt" "-ID:\Windows Kits\10\include\10.0.17763.0\cppwinrt" -Ic:\sybase\OCS-15_0\include /Tcfast_fib.c /Fobuild\temp.win-amd64-3.7\Release\fast_fib.obj
fast_fib.c
D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:H:\anaconda3\libs /LIBPATH:H:\anaconda3\PCbuild\amd64 "/LIBPATH:D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\lib\x64" "/LIBPATH:D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x64" "/LIBPATH:D:\Windows Kits\10\lib\10.0.17763.0\ucrt\x64" "/LIBPATH:D:\Windows Kits\10\lib\10.0.17763.0\um\x64" /LIBPATH:c:\sybase\DataAccess\ADONET\dll /LIBPATH:C:\sybase\OCS-15_0\lib /EXPORT:PyInit_fast_fib build\temp.win-amd64-3.7\Release\fast_fib.obj /OUT:build\lib.win-amd64-3.7\fast_fib.cp37-win_amd64.pyd /IMPLIB:build\temp.win-amd64-3.7\Release\fast_fib.cp37-win_amd64.lib正在创建库 build\temp.win-amd64-3.7\Release\fast_fib.cp37-win_amd64.lib 和对象 build\temp.win-amd64-3.7\Release\fast_fib.cp37-win_amd64.exp
正在生成代码
已完成代码的生成
copying build\lib.win-amd64-3.7\fast_fib.cp37-win_amd64.pyd ->

fast_fib.cp37-win_amd64.pyd就是fast_fib.pyx编译成的pyd文件
测试一下文件是否能用
打开命令行:

Microsoft Windows [版本 10.0.17763.2928]
(c) 2018 Microsoft Corporation。保留所有权利。H:\Python27\pythonUpSpeedExc>python
Python 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32Warning:
This Python interpreter is in a conda environment, but the environment has
not been activated.  Libraries may fail to load.  To activate this environment
please see https://conda.io/activationType "help", "copyright", "credits" or "license" for more information.
>>> from fast_fib import fib3
>>> fib3(40)
102334155
>>>

编译后的pyd文件可用

下面是我在编译过程中遇到问题和解决方法:
1、error: Microsoft Visual C++ 14.0 or greater is required
解决办法:
需要Microsoft C++生成工具14.0以上
这个很好解决,打开这个链接,下载生成工具,然后把需要的装上即可
在这里插入图片描述
在这里插入图片描述
我这里有个问题,不知道是不是我已经装了visual studio2017的关系,我发现,安装好的工具不起作用,于是我就在visual studio2017点那里点修改,选了visual studio里的这两项来安装,然后就发现可以了

2、fatal error C1083: 无法打开包括文件: “io.h”: No such file or directory
解决办法:
再打开刚刚那个安装工具,选择对应版本的sdk安装就好了
我这里是win10 ,所以我选择win10 sdk
在这里插入图片描述


http://chatgpt.dhexx.cn/article/xZnmtQPw.shtml

相关文章

如何在pycharm上编译使用pyx文件

前言 cython是专门用来写在Python里面import用的扩展库。实际上Cython的语法基本上跟Python一致,而Cython有专门的“编译器”先将 Cython代码转变成C,然后使用C编译器编译出最终的Python可调用的模块。 本人因在github中找到了一份用cython写的自定义库…

虚拟机的安装与ubuntu的创建,,Ubuntu快捷键

文章目录 vmware安装包与Ubuntu镜像文件:VMware的安装Ubuntu的创建Ubuntu快捷键 在学习与工作中,我们往往可能需要用到windows以外的操作系统,比如Linux系统就适合开发者的使用,往往用到虚拟机,这篇博客来讲讲VMware的…

Ubuntu操作-09 快捷键

文章目录 1 系统快捷键2 终端快捷键3 Gedit编辑器快捷键 Ubuntu快捷键介绍,已在Ubuntu21.10测试 1 系统快捷键 命令说明Ctrl Alt Fn1进入图形化用户登录界面Ctrl Alt Fn2进入当前图形化界面Ctrl Alt Fn3-Fn6进入命令行虚拟终端Ctrl Alt Fn7-Fn12进入另外的…

不可不知的ubuntu系统快捷键

软硬件环境 ubuntu 19.10 64bit Desktop 前言 ubuntu是当前最流行的linux发行版之一,使用ubuntu除了经常使用的Ctrlc (复制) 和Ctrlv (粘帖),其实还有一些不常用但却很有用的快捷键,熟练掌握常用快捷键绝对可以大大提升你的工作学习效率。文中…

ubuntu系统的快捷键,软件等配置

最近要完全使用ubuntu桌面系统了,很多在win 上的快捷键和软件都无法使用了,这里打算总结一下。 文章目录 1 常用快捷键2 常用配置调整左侧状态栏的顺序截图火狐禁止通知键盘快捷键设置DNS修改默认打开程序vs code 终端间距太大 3 常用软件安装meshlabana…

ubuntu的快捷键

1.一起按AltTab,在应用间顺向一览窗口,AltTabShift是逆向预览窗口。先打开终端,后打开文本编辑器,是下面这个样子。 一起按AltTab之后就会变成下面这样子 2.AltF2是打开命令窗口,可输入命令启动应用程序。一起按AltF2之后变成下面这样子,还可…

ubuntu系统快捷键

Ubuntu 16.04常用快捷键(转) 注意:在Linux下Win键就是Super键 启动器 Win(长按) 打开启动器,显示快捷键Win Tab 通过启动器切换应用程序Win 1到9 与点击启动器上的图标效果一样Win Shift 1到9 在应用中打开一个新窗口Win T 打…

Ubuntu快捷键、Ubuntu终端常用命令

Ubuntu快捷键、Ubuntu终端常用命令 作为一个window多年忠实粉,后来转去做自动驾驶不得已选用Ubuntu系统,系统需要劳烦同事帮忙装,装好后win10+ubuntu18.04双系统,开机登录ubuntu后一开始真的一脸蒙,啥都不…

14个你必须要知道的ubuntu快捷键

文章目录 1、 Super 键:打开活动搜索界面2、 CtrlAltT:打开 Ubuntu 终端窗口3、 SuperL 或 CtrlAltL:锁屏4、 SuperD or CtrlAltD:显示桌面5、 SuperA:显示应用程序菜单6、 SuperTab 或 AltTab:在运行中的应…

Ubuntu 16.04常用快捷键(转)

注意:在Linux下Win键就是Super键 启动器 Win(长按) 打开启动器,显示快捷键Win Tab 通过启动器切换应用程序Win 1到9 与点击启动器上的图标效果一样Win Shift 1到9 在应用中打开一个新窗口Win T 打开垃圾桶 面板 Win(轻触点击) 打开dash主页Win A 打…

Ubuntu常用快捷键

一、 打开Terminal的快捷键是CtrlAltT 二、 中止运行CtrlC 一般最常用的是cd, ls, mkdir, rmdir, cp, rm, mv, clear, pwd, shutdown. 一般使用时只需记住常用命令,不清楚的时候用man查询。如需查看更多命令可以阅读《The Linux Command Line》(《Linux命令行大全…

excel设置行高和列宽

excel设置行高和列宽 1、CtrlA:全选 2、

DataGridView设置行高

DataGridView设置行高 DataGridView绑定数据源后修改行高的方法。 解决方案

Python 技术篇-使用xlwt库操作excel设置行高不生效问题解决方法

默认行高是和文字的高度进行匹配的,即 height_mismatch 的值是 False,这就导致了我们设置行高不会生效,我们要做的就是在设置某一行的高度之前,先把这个属性的值改为 True 就好了。 sheets.row("行索引").height_misma…

excel设置行高等于列宽_如何在Excel中设置行高和列宽

excel设置行高等于列宽 By default, when you create a new workbook in Excel, the row height and column width is always the same for all cells. However, you can easily change the height and width for one or more rows and columns. 默认情况下,当您在Excel中创建…

html怎样设置行高,HTML行高怎么设置

2 回答 2021-01-30 浏览:42 分类:网页设计 回答: 需要准备的材料分别有:电脑、浏览器、html编辑器。 1、首先,打开html编辑器,新建html文件,例如:index.html,编写问题基础代码。 2、在index.html中的标签中,输入样式代码:style="height:100px"。 3、浏览器…

ag-grid 设置行高

ag-gird 表格原生行高实在太宽,现在需要将行高缩小一点.以下将对表格的两种情况进行设置: 1.普通表格数据展示(无分组情况) 效果如图所示: 设置步骤: (1) .rowHeight:设置数据行行高;headerHeight设置表格表头行高, rowHeight: 28, // 设置表格行高headerHeight: 30, // 设置表…

Layui 设置行高

layui table设置单行高度以展示图片等 <style>.laytable-cell-1-PICTURE_SETTING_URL { /*PICTURE_SETTING_URL为表格字段的对应field*/height: 100%;max-width: 100%;} </style>

2.1.8设置行高

2.1.8设置行高 示例代码&#xff1a; package test.create.c02;import vita.ofd.layout.OfdDocument; import vita.ofd.layout.element.Paragraph; import vita.ofd.layout.element.paragraph.Text;/*** 展示如何设置行高* */ public class C0208SetLineHeight {public stati…

html页面行高静态设置,如何给HTML页面设置行高

如何给HTML页面设置行高 设置行高 由于简单还是老样子直接上代码了哦&#xff0c;注意&#xff1a;line-height属性值可以使用固定值如&#xff1a;20px..和百分比如&#xff1a;20%。 如果想让文字垂直居中如下&#xff1a;行高的主要作用是用来设置文本的垂直方向居中对齐行高…