news 2026/7/4 1:55:33

python --打包pyd或so文件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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"
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 3:51:45

【Django毕设全套源码+文档】基于django的羽毛球服务管理系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/2 0:17:00

【Django毕设源码分享】基于 Python 的教育题包综合处理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/2 0:15:16

【Django毕设源码分享】基于Django的B_S架构的球类赛事发布和在线购票系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/1 11:42:03

杨洋《雨霖铃》预约破百万 新释打戏花絮展南侠风骨

2月10日,由杨洋领衔主演的古装武侠剧《雨霖铃》优酷站内预约人数强势突破百万大关,观众期待值持续拉满。该剧以北宋为背景,讲述了以杨洋饰演的“南侠”展昭为核心的一众江湖志士,于诡谲朝局与武林纷争中坚守道义、护卫家国的侠义传…

作者头像 李华
网站建设 2026/7/1 14:55:36

【Django毕设全套源码+文档】基于django的智慧农业农产品销售及农机设备管理系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华