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

article/2025/9/18 13:10:42

前言

cython是专门用来写在Python里面import用的扩展库。实际上Cython的语法基本上跟Python一致,而Cython有专门的“编译器”先将 Cython代码转变成C,然后使用C编译器编译出最终的Python可调用的模块。
本人因在github中找到了一份用cython写的自定义库函数代码,但无法直接运用到我所创建的pycharm编辑的项目文件中,因此为了实现在pycharm中py文件的代码调用,写了这篇文章。

一、pyx,pyd文件是什么?

pyx文件

pyx 文件是由 Cython 编程语言 “编写” 而成的 Python 扩展模块源代码文件。.pyx 文件要想被python语言直接识别,必须先被编译成 .c 文件,再编译成 .pyd 或 .so 文件,才可作为模块 import直接导入使用。

pyd文件

pyd 文件是非 Python,由其它编程语言 “编写-编译” 生成的 Python 扩展模块。Python 要导入 .pyd 文件,实际上是在 .pyd 文件中封装了一个 module。在 python 中使用时,把它当成 module 来用就可以了,即:“import 路径名.modulename” 即可,路径名为 .pyd 文件所在的路径。
介绍更加详细和全面的可以参考https://blog.csdn.net/qq_35608277/article/details/88937904
———————————————

二、使用步骤

1.安装对应的python平台和pycharm

在这里我使用的是python3.8和pycharm2020社区版(对于一般的来说够了)

2.创建编写对应的pyx文件

pycharm也可以直接创建编写pyx文件,但是在编写语法上需要按照cython格式去编写
创建pyx文件直接新建,后缀名为pyx即可
在这里插入图片描述
编写对应的SegmentImage.pyx文件,按照cython格式来,这里只是举个例子
在这里插入图片描述

3.编写对应的setup.py文件

setup.py文件的主要目的就是对pyx文件进行编译,然后生成pyd文件,方便在py文件中直接调用
代码如下:
代码如下(示例):

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
import numpy as npfilename = 'SegmentImage'
full_filename = 'SegmentImage.pyx'ext_modules = [Extension(filename, [full_filename],language='c++',extra_compile_args=['-O3', '-march=native', '-ffast-math', '/openmp'],extra_link_args=['/openmp'])]setup(cmdclass={'build_ext': build_ext},ext_modules=ext_modules,include_dirs=[np.get_include()])

4.编译setup文件,生成pyd文件

编译setup文件时,不要直接运行setup.py,不然可能出现这样的错误‘no commands supplied’
这是因为python的run程序,相当于命令行里的python setup.py
所以若想要不报错,有两种方法
1、打开 pycharm的命令行模式,点pycharm 左下角的电脑方块图标,选中【Terminal】即可进入终端,输入命令: python setup.py install。
在这里插入图片描述
2、直接从cmd进入文件所在目录下输入令: python setup.py install
在这里插入图片描述
pyx成功编译后的界面如下
在这里插入图片描述
这样就完成了对pyx文件的成功编译,在py文件中直接调用对应的库文件就好

from SegmentImage import segmentImage 

三、总结

总结起来就是步骤如下:
第一步安装对应的python和pycharm;第二步编写对应的pyx文件;第三步编写对应的setup文件;第四步生成pyd文件;第五步直接调用
参考博客:https://blog.csdn.net/u011418530/article/details/79986070
https://blog.csdn.net/ditai7533/article/details/101966350;https://blog.csdn.net/qq_35608277/article/details/88937904


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

相关文章

虚拟机的安装与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;行高的主要作用是用来设置文本的垂直方向居中对齐行高…

html调整行高,html设置行高 html语言怎么设置设置表格行高?

html语言怎么设置设置表格行高?小编真的喜欢你,闭上眼,以为小编能忘记,但流下的眼泪,却没有骗到自己 小编知道表格列宽是用来调整列宽,那么行高怎么设置啊?床前明月光,躺中央,人多轮流上,人少小编坐庄。 需要准备的材料分别有:电脑、浏览器、html编辑器。 首先,打开…