python把项目编译成so文件

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、使用步骤
    • 1.引入库
  • 总结


前言

`提示

例如:


提示:以下是本篇文章正文内容,下面案例可供参考

一、使用步骤

1.引入库

代码如下(示例):

# -*- coding:utf-8 -*-
# author: cbj
# datetime: 2024/7/1 16:49
# @File: 133打包python项目so文件.py
#
import copy
from pathlib import Path
import os
from pathlib import Path
from distutils.core import setup
from Cython.Build import cythonizeignore_dir_name = ['migrations', '__pycache__', 'static', '.idea']
ignore_suffix = ['.csv', '.xlsx', '.doc', '.docx']
ignore_file = ['manage.py', "main_new.py", "main_new2.py", "main.py", "clean.py", "jiami.py", "simplepro.lic", "jiami2.py"]delete_suffix = ['.c', '.py', '.pyc', '.o', ]def get_all_py_files(dir_root):"""获取所有的py文件,要编译成so的文件:params dir_root: 项目根目录地址"""res_py_file_list = []for root, dirs, files in os.walk(dir_root):dirs1 = copy.deepcopy(dirs)for i in ignore_dir_name:if i in dirs1:dirs.remove(i)continuefor file in files:# 不是py文件的 不转soif os.path.splitext(file)[1] != '.py':continue# 某些特定文件不转soif file in ignore_file:continue_path = f'{root}/{file}'res_py_file_list.append(_path)# print(f'====res_py_file_list:{res_py_file_list}')return res_py_file_listdef py_to_so(project_dir=None, build_dir=None, build_tmp_dir=None):"""生成 .so文件:return:"""# project_dir = './'# build_dir = './'# build_tmp_dir = './'project_dir = project_dirbuild_dir = build_dirbuild_tmp_dir = build_tmp_dirres_py_file_list = get_all_py_files(project_dir)setup(ext_modules=cythonize(res_py_file_list, language_level="3"),script_args=["build_ext", "-b", build_dir, "-t", build_tmp_dir])# 删除原始项目py文件
def clean_c_file(dir_root='./'):deletefiles = []for root, dirs, files in os.walk(dir_root):dirs1 = copy.deepcopy(dirs)for i in ignore_dir_name:if i in dirs1:dirs.remove(i)continuefor file in files:# 不需要转so 也不需要删除的文件if file in ignore_file:continue# 不需要转so 也不需要删除的文件if Path(file).suffix in ignore_suffix:continueif os.path.splitext(file)[1] in delete_suffix:_path = f'{root}/{file}'deletefiles.append(_path)# os.remove(_path)# print(f'deletefiles==={deletefiles}')for r1 in deletefiles:os.remove(r1)if __name__ == '__main__':"""参考地址:https://xie.infoq.cn/article/9644cb3920e5163c4ec19d958https://xie.infoq.cn/article/db31ccde7cbaad84a07aaec57使用步骤 1 生成 .so文件  py_to_so()2 清除原始项目文件和不需要文件 clean_c_file"""# pa = r'D:\data1\20240701\jiami\20240110\data_augmentation20230914\data_augmentation'pa = './'py_to_so(project_dir=pa, build_dir=pa, build_tmp_dir=pa)# clean_c_file(pa)

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/38989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言两个较大数字相加

C语言两个较大数字相加 思路分析 由于C语言中的基本数据类型(如int、long等)有固定的大小,无法直接处理非常大的数字(如数百位的数字)。因此,我们需要采用字符串或数组来表示大数字,并逐位进行…

1.4 ROS2集成开发环境搭建

1.4.1 安装VSCode VSCode全称Visual Studio Code,是微软推出的一款轻量级代码编辑器,免费、开源而且功能强大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比Diff、GIT 等特性,支持插件…

导入第三方包Could not find a package configuration file provided by “demo msgs“ with

报错代码 Could not find a package configuration file provided by "demo msgs" with any of the following names: demo msgsConfig.cmake demo msgs-config.cmake Add the installation prefix of "demo msgs" tO CMAKE PREFIX PATH or set "dem…

7.3数据库第一次作业

安装MySQL 1.打开安装包 2.选择自定义安装(custom)并点击下一步 3.自定义安装路径 4.点击执行 5.执行成功 6.默认选项点击下一步 7.选择新的授权方式并点击下一步 8.配置密码 9.默认配置并点击下一步 10.点击执行(Execute) 11.执…

python中的文件

1.什么是文件? 硬盘上存储的数据都是以文件的形式来组织的~ 文件是数据在硬盘上的存储形式,不同的数据在硬盘上的存储形式是不同的, 2.文件路径 文件夹/目录。 文件夹,再包含文件夹的情况,这就是一个嵌套的关系&…

2024-2025年本田维修电路图线路图接线图资料更新

此次更新了2024-2025年本田车系电路图资料,覆盖市面上99%车型,包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照表位置等等! 汽修帮手汽…

Java中使用arima预测未来数据

看着已经存在的曲线图数据,想预估下后面曲线图的数据。 import java.util.Vector;public class AR {double[] stdoriginalData{};int p;ARMAMath armamathnew ARMAMath();/*** AR模型* param stdoriginalData* param p //p为MA模型阶数*/public AR(double [] stdori…

你的硬盘知道的太多:你以为你的秘密真的被删除了吗?

某一天你收到了朋友发给你的一个秘密文件,在看完之后,为了不被别人发现,你决定将文件毁尸灭迹! 你选中文件名称 / 右键 / 删除,好了,文件已经消失了。但你是懂电脑的,知道文件此时还在回收站里面…

Ozon/Noon/Temu/TK Shop如何多店铺经营免受关联封号?

许多商家和个人都面临着多店铺经营免受关联封号的挑战。特别是在像Ozon、Noon、TEMU以及TikTok Shop等平台上,如何有效管理多个店铺并避免关联封号成为关键问题。 一、多店铺经营防关联封号的重要性: 在多店铺经营过程中,如果平台检测到多个…

海外虚拟卡开卡平台有哪些?无限开卡,无其他限制

随着时代的发展很多小伙伴都需要海外虚拟卡,海外虚拟卡开卡平台我这里用的是Fomepay的,他们比较人性化,有客服,随时可咨询 对于消费者而言,虚拟卡号提供了隐私,因此广告商更难以跟踪和定位购买行为&#x…

PyQt5入门教程:从安装到构建简单应用

PyQt5入门教程:从安装到构建简单应用 简介 PyQt5是一个功能强大的Python绑定库,用于Qt应用程序框架。它允许我们使用Python语言快速开发跨平台的桌面应用程序。本教程将引导你完成PyQt5的安装、配置,并带你创建一个简单的图形用户界面&…

《python程序语言设计》2018版第5章第50题利用turtle编程显示三角形图案

2024.06.18 05.50.01version 首先我觉得还是应该现从简单阵列来进行。非常简单。顺便回忆一下我3月份做的5.19题里那些淘气的数列 代码成功 #将i从10设计成12打印的毕竟好看 for i in range(1,12):#这这里给结尾的i2效果并不好看for j in range(1,i):print(j,end" "…

【深度学习】Transformer

李宏毅深度学习笔记 https://blog.csdn.net/Tink1995/article/details/105080033 https://blog.csdn.net/leonardotu/article/details/135726696 https://blog.csdn.net/u012856866/article/details/129790077 Transformer 是一个基于自注意力的序列到序列模型,与基…

软件测试与质量保证 | 云班课选择题库

目录 第1章课后习题 第2章课后习题 第3章课后习题 第4章课后习题 第5章课后习题 第6章课后习题 第7章课后习题 第8章课后习题 第9章课后习题 第10章课后习题 第11章课后习题 第12章课后习题 第13章 测试相关未分类习题 第1章课后习题 1. 与质量相关的概念包括 &a…

51单片机第26步_单片机工作在空闲模式

重点学习51单片机工作在空闲模式。 1、进入空闲模式的方法 通过将PCON寄存器中的IDLE置1,CPU就会进入空闲模式。在空闲模式中,程序停止执行,RAM中的数据仍然保持,晶振继续工作,但与CPU断开,定时器和串行口…

IPython调试秘籍:pdb调试器深度解析与实战

🐞 IPython调试秘籍:pdb调试器深度解析与实战 在Python编程中,调试是开发过程中不可或缺的一环。IPython,作为一个强大的交互式Python解释器,内置了pdb调试器,使得代码调试变得异常便捷。本文将深入探讨如…

可充电纽扣电池ML2032充电电路设计

如图,可充电纽扣电池ML2032充电电路设计。 图中二极管是为了防止电流倒灌, 电阻分压出3.66v,再减掉二极管压降(约0.4v)得3.26V,加在电池正负极充电。 随着电池电量的积累,充电电流逐步减小,极限…

什么样的企业适合SD-WAN网络专线?

SD-WAN(Software-Defined Wide Area Network,软件定义广域网)是一种网络技术,它利用软件定义的方式管理和控制广域网(WAN),旨在提高网络效率、降低成本并简化网络管理。以下是适合采用SD-WAN网络…

服务器之BIOS基础知识总结

1.BIOS是什么? BIOS全称Basic Input Output System,即基本输入输出系统,是固化在服务器主板的专用ROM上,加载在服务器硬件系统上最基本的运行程序,它位于服务器硬件和OS之间,在服务器启动过程中首先运行&am…

C语言在QC工作当中的应用

一、引入 在质量控制(Quality Control,简称QC)工作中,C语言的应用可能并不像在一些其他领域(如嵌入式系统开发、游戏开发等)中那么直接,但C语言仍然可以在多个方面为QC提供支持。以下是一些C语…