Python詳細(xì)介紹模型封裝部署流程
一、桌面應(yīng)用軟件
桌面應(yīng)用軟件是基于GUI(Graphical User Interface,圖形用戶界面)交互式程序,需要實現(xiàn)GUI庫實現(xiàn)前端交互。
Python常見的GUI庫
- TKinter:基于Tk的Python庫,這是Python官方采用的標(biāo)準(zhǔn)庫,優(yōu)點(diǎn)是作為Python標(biāo)準(zhǔn)庫、穩(wěn)定、發(fā)布程序較小,缺點(diǎn)是控件相對較少;
- wxPython:基于wxWidgets的Python庫,優(yōu)點(diǎn)是控件比較豐富、缺點(diǎn)是穩(wěn)定性相對差點(diǎn)、文檔少、用戶少;
- pyQT5,Pyside2:基于Qt的Python庫,優(yōu)點(diǎn)是控件比較豐富、跨平臺體驗好、文檔完善、用戶多、缺點(diǎn)是庫比較大,發(fā)布出來的程序比較大;
- Qt Designer:Qt是一個1991年由Qt Company開發(fā)的跨平臺C++圖形用戶界面應(yīng)用程序開發(fā)框架;
- PyQT5:"Riverbank Computing"公司早期的python GUI開發(fā)工具庫,是QT與Python的結(jié)合,但并非Qt公司出品,屬于“義子”;
- Pyside2:2018年7月,Qt公推出的工具庫,它提供了對Qt5.12+完整框架的訪問,簡單點(diǎn)來說就是在Python下使用Qt,即Qt的“親兒子”;使用上PyQt5與PySide2差別很小,接口調(diào)用幾乎一模一樣。
程序打包工具:Pyinstaller
下圖為Python桌面應(yīng)用軟件開發(fā)大體的技術(shù)架構(gòu)。
圖1 軟件技術(shù)架構(gòu)
二、Pyside2&Qt designer
(1)PySide2——控件
圖形界面的工具基礎(chǔ):控件(widget)、信號(signal)與槽(solt),控件表示前端界面可顯示/操作/交互的元素,如按鈕、輸入控件、展示控件等,供用戶點(diǎn)擊、接受用戶輸入、展示內(nèi)容、存放其它控件。
PySide2的安裝:
pip install PySide2 -i https://pypi.tuna.tsinghua.edu.cn/simple/
下面為一個PySide2程序的實現(xiàn)流程:
1.定義一個應(yīng)用
2.定義主窗口
3.定義需要的控件
4.執(zhí)行應(yīng)用,進(jìn)入事件循環(huán)
# -*- coding: utf-8 -*- """ # @file name : 01_helloworld.py # @brief : 使用pyside編寫第一個軟件 """ from PySide2.QtWidgets import QApplication, QMainWindow, QTextBrowser, QLabel if __name__ == "__main__": app = QApplication([]) # UI應(yīng)用程序管理應(yīng)用 # ================================================ # 1. 定義主窗口 window = QMainWindow() # 2. 定義文本框顯示 label = QLabel(window) label.setText("Hello World!") # 3. 窗口顯示 window.show() # ================================================ app.exec_() # 進(jìn)入QApplication的事件處理循環(huán)
圖2 PySide2實現(xiàn)第一個GUI界面
(2)PySide2——信號(signal)與槽(slot)
用戶對圖形界面的控件操作就會產(chǎn)生信號,程序應(yīng)能接收識別信號,并進(jìn)行相應(yīng)的處理。特點(diǎn)信號的處理函數(shù)稱為槽。
按鈕被點(diǎn)擊時,向程序發(fā)出信號,程序自動執(zhí)行btn_slot函數(shù)。
# -*- coding: utf-8 -*- """ # @file name : 02_signal&slot.py # @brief : 了解信號與槽 """ from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QLineEdit if __name__ == "__main__": app = QApplication([]) # UI應(yīng)用程序管理應(yīng)用 # ================================================ # first. 定義主窗口 window = QMainWindow() window.resize(500, 400) window.move(300, 310) # 2. 定義按鈕控件 def btn_slot(): print("用戶點(diǎn)擊了按鈕,將執(zhí)行xxx") btn = QPushButton("我的按鈕", window) btn.clicked.connect(btn_slot) # 3. 單行文本框 def text_slot(): text = text_edit.text() print("檢測到文本框變動,當(dāng)前文本框信息為:{}".format(text)) text_edit = QLineEdit(window) text_edit.move(100, 0) text_edit.setPlaceholderText('請輸入信息...') text_edit.textChanged.connect(text_slot) # 窗口顯示 window.show() # ================================================ app.exec_() # 進(jìn)入QApplication的事件處理循環(huán)
圖3PySide2實現(xiàn)第二個GUI界面
(3)常用控件
1.按鈕:btn = QPushButton(“我的按鈕”,window)
2.單行文本框:text_edit = LineEdit(window)
3.標(biāo)簽顯示:label = QLabel(window)
4.文件選擇:path_file,filetype = QFileDialog.getOpenFileName(window,"選取文件","./","All File(*);;Text Files(*.jpg)")
(4)Qt Designer
Qt Designer可以通過拖曳的方式完成復(fù)雜的界面設(shè)計,完成控件設(shè)計。Qt Designer生成的UI界面是一個后綴為.ui的文件,其實是一個XML文件。通過使用pyuic5命令將.ui文件轉(zhuǎn)換成.py文件,然后將.py文件引入到自定義的Python代碼中。主要分為以下四步:
- 安裝:隨著pyside2安裝時,自動安裝
- 啟動:Python安裝目錄下Scripts\pyside2-designer.exe
- 轉(zhuǎn)換:pyside2-uic xxx.ui > xxx.py
- 使用:在QMainWindow中初始化xxx.py中的控件,然后定義槽函數(shù)
圖4 Qt Designer設(shè)計流程
三、模型封裝部署
封裝--面向?qū)ο笕筇匦灾?,面向?qū)ο螅∣bject Oriented Programming)的三大特性如下:
- 封裝(Encapsulation):隱藏對象的屬性和實現(xiàn)細(xì)節(jié),僅對外提供公共訪問方式;
- 繼承(Inheritance):使用已存在的類定義作為基礎(chǔ)建立新類的方法;
- 多態(tài)(Polymorphism):“多種狀態(tài)”,接口的多種不同的實現(xiàn)方式即為多態(tài);
類的設(shè)計三要素:
- 類名:這類事物的名字;
- 屬性:這類事物具有什么樣的特征;
- 方法:這類事物具有什么樣的行為;
圖5封裝模型的過程
- 類名:Predictor;
- 屬性:model,path_ckpt,device,transform;
- 方法:preprocess,inference,get_model,get_transform;
四、Pyinstaller
Pyinstaller是一個用來將Python程序打包成一個獨(dú)立可執(zhí)行軟件包,支持Windows、Linux和Mac OS,Pyinstaller可以讀取您編寫的Python腳本。
Pyinstaller分析代碼執(zhí)行所需的所有模塊,然后將這些文件的副本和Python解釋器一起放在單個文件夾中,或者在單個可執(zhí)行文件中。
Pyinstaller的安裝:
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/
軟件打包執(zhí)行命令:pyinstaller xxx.py,完成后到root/dist/xxx下,找到xxx.exe
pyinstaller main.py --noconsole -F -p D:\course_study\CV_Item\self\img_cls
更新spec文件命令:
pyinstaller -F --onefile main.spec
常用參數(shù):
-F,-onefile產(chǎn)生單個的可執(zhí)行文件
-p,設(shè)置python導(dǎo)入模塊的路徑(和設(shè)置pythonpath環(huán)境變量的作用相似)
--noconsole軟件啟動時不顯示命令窗
五、總結(jié)
到此這篇關(guān)于Python詳細(xì)介紹模型封裝部署流程的文章就介紹到這了,更多相關(guān)Python模型封裝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pymysql實現(xiàn)往表中插入數(shù)據(jù)過程解析
這篇文章主要介紹了Pymysql實現(xiàn)往表中插入數(shù)據(jù)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06Python學(xué)習(xí)之名字,作用域,名字空間(下)
這篇文章主要介紹了Python學(xué)習(xí)之名字,作用域,名字空間,緊接上一篇文章內(nèi)容展開全文,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助2022-05-05pytorch 指定gpu訓(xùn)練與多gpu并行訓(xùn)練示例
今天小編就為大家分享一篇pytorch 指定gpu訓(xùn)練與多gpu并行訓(xùn)練示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12自然語言處理之文本熱詞提取(含有《源碼》和《數(shù)據(jù)》)
這篇文章主要介紹了自然語言處理之文本熱詞提取,主要就是通過jieba的posseg模塊將一段文字分段并賦予不同字段不同意思,然后通過頻率計算出熱頻詞,需要的朋友可以參考下2022-05-05Python實現(xiàn)對比兩個Excel數(shù)據(jù)內(nèi)容并標(biāo)記出不同
日常工作中需要對比兩個Excel工作表中的數(shù)據(jù)差異是很不方便的,使用python來做就比較簡單了!本文為大家介紹了python實現(xiàn)對比兩個Excel的數(shù)據(jù)內(nèi)容并標(biāo)記出不同數(shù)據(jù)的示例代碼,需要的可以參考一下2022-12-12python client使用http post 到server端的代碼
python client使用 http post 到server端的代碼,供大家學(xué)習(xí)參考2013-02-02