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.pswp.cn/web/38989.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38989.shtml
英文地址,請注明出處:http://en.pswp.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語…