当前位置: 首页 > news >正文

python --打包pyd或so文件

编译pyd或so

utils_ccc.py 文件(核心)

# coding: utf-8importargparsefromsetuptoolsimportsetup,ExtensionfromCython.Buildimportcythonize# python 3.10.3 cython==3.1.6frompathlibimportPathfromloguruimportloggerimportshutilimportsys BASE_DIR=Path(__file__).resolve().parent# 项目根路径PYD_PATH=BASE_DIR.joinpath('output_pyd')# pyd输出文件TEMP_PATH=BASE_DIR.joinpath('temp')# 临时文件classCompileTools(object):'''编译'''def__init__(self,py_file:str):self.py_file:Path=Path(py_file)# 待编译文件self._module_name=self.py_file.stem# 文件名(无后缀)self.__C_PATH=BASE_DIR.joinpath(f'{self._module_name}.c')# c文件绝对路径self._system_win:int=1ifsys.platform.startswith("win")else0# 1为win 0为linuxdefunlink_file(self):'''重置目录'''shutil.rmtree(PYD_PATH)# 清空pyd文件夹logger.debug(f'清空:[{PYD_PATH}]')def_get_ext_compile_args_and_compile_args(self)->tuple:'''根据系统生成编译参数'''ifself._system_win==1:# windowsext_compile_args=["/std:c99",# 指定 C99 标准"/O2",# 优化编译(对应 GCC 的 -O2)"/LD"# 生成动态库(对应 GCC 的 -shared)]ext_link_args=[]else:ext_compile_args=["-std=c99",# 指定 C99 标准"-O2",# 优化编译"-fPIC"# 位置无关代码(Linux 必需)]ext_link_args=["-shared"]# 生成动态库returnext_compile_args,ext_link_argsdefstart(self):'''编译'''PYD_PATH.mkdir(parents=True,exist_ok=True)# 创建文件夹TEMP_PATH.mkdir(parents=True,exist_ok=True)# 创建文件夹ext_compile_args,ext_link_args=self._get_ext_compile_args_and_compile_args()ext=Extension(# 定义扩展模块name=self._module_name,# 定义编译后扩展模块的 import 名称(核心,决定你怎么导入)sources=[str(self.py_file),],# 仅作为「扩展模块的元信息标识」(类似标签),不影响 import、不影响编译结果extra_compile_args=ext_compile_args,# 强制编译器用 C99(新标准):支持在 for 循环里直接声明变量(这是现在写 C 代码的常规写法)extra_link_args=ext_link_args# 链接参数(Linux 需加 -shared))setup(# 执行编译name=self._module_name,ext_modules=cythonize(ext,compiler_directives={"language_level":"3",# 强制 Python3 语法"always_allow_keywords":True,# 兼容关键字参数}),script_args=["build_ext"
http://www.jsqmd.com/news/370669/

相关文章:

  • springboot+vue基于web的NBA球星勒布朗詹姆斯球员生涯网站laravel
  • 山东济南青岛淄博枣庄本地著作权纠纷律师推荐榜:专业适配度测评与场景化选择指南 - 博客万
  • PFC2D 借助 Python 绘制应力云图:简洁代码背后的奥秘
  • springboot非遗 非物文化遗产面塑云展厅微信小程序
  • springboot+vue基于”互联网”的互动式英语线上教学学习系统聊天
  • 基于卷积神经网络 - 长短期记忆网络的多变量时间序列预测:MATLAB实现指南
  • springboot+vue农贸市场摊位租赁管理系统
  • AI论文生成神器有哪些?2026年精选9款AI写论文工具亲测,2小时搞定初稿+润色 - 掌桥科研-AI论文写作
  • buuctf--x_ctf_b0verfl0w
  • AI论文生成神器有哪些?2026年精选11款写论文的AI指南,帮你规避雷区 - 掌桥科研-AI论文写作
  • 2026国产PCB设计软件推荐:告别国外依赖,实现自主可控 - 品牌2025
  • 机器人租售出场分几次?分段专人触发
  • 2026年比较好的重载式精密输送线/医疗行业精密输送线公司实力参考哪家强(可靠) - 品牌宣传支持者
  • 2026年靠谱的防水型密集型母线槽/高温专用密集型母线槽更新厂家选择指南哪家好 - 品牌宣传支持者
  • 2026年权威的土耳其投资移民机构TOP3排行榜:优质中介推荐与选择指南 - 行业观察日记
  • 241_尚硅谷_客户管理系统-修改客户和作业
  • 2026年目前评价好的三边封包装袋加工厂哪家好,三边封拉链袋/八边封包装袋/自立袋,三边封包装袋制造企业排行榜单 - 品牌推荐师
  • DeepSeek再开源3B-MoE-OCR模型,视觉压缩高达20倍,支持繁琐图表解析等多模态能力!
  • 2026年中银通支付卡回收值得一试的三类品牌渠道 - 淘淘收小程序
  • Claude Opus 4.6 关于智慧和灵活的回答
  • 嵌入式学习笔记 - 舵机
  • 2026国产高端EDA工具推荐:自主可控优选 - 品牌2025
  • 从工具到伙伴:以“系统性思维”迎接AI推理赋能的新创业时代
  • 多播委托
  • 2026年质量好的工业设备输送线/铝型材输送线销售厂家推荐哪家好(真实参考) - 品牌宣传支持者
  • 2026年靠谱的动力配电柜/非标配电柜销售厂家推荐哪家好(真实参考) - 品牌宣传支持者
  • AI推理时代开启,创客匠人助力创业者拥抱“智能创业”新范式
  • 02. GUIStyle
  • 【Django毕设全套源码+文档】基于python的养老院健康跟踪系统分析与设计(丰富项目+远程调试+讲解+定制)
  • 旺财助手操作指南