學習筆記(42):Python實戰編程-pyinstaller程序打包

?

將程序打包可以使得所有Windows帶有python虛擬機的電腦進行使用,打包的內容有代碼加外部資源(如logo圖片等)

步驟:
1)創建程序的代碼
2)生成配置文件——用于獲得打包的資源,將資源保存在運行程序的電腦的臨時文件中,這里臨時文件是resources文件夾


3)修改python源代碼:因為此時的程序的資源目錄resources不一定在當前項目的目錄下,而是在打包后再次運行時一定要將資源解壓縮到臨時文件當中


4)創建配置文件:因為程序打包需要引用資源文件,因此必須手工地對資源的路徑進行定義,就需要根據打包程序生成一個.spec配置文件,
pyi-makespec -F *.py給定要打包的程序

?


5)編輯spc文件,定義我們需要使用資源路徑打開.spec文件——找到datas=[],項,修改為data = [("resources","resources")]里面放的是一個元組


6)程序打包:pyinstaller -F *.spec


7)若沒有則使用pyinstaller -F *.py,
8)打包結束后就會有*.exe文件了

?

?

'''將程序打包可以使得所有Windows帶有python虛擬機的電腦進行使用,打包的內容有代碼加外部資源(如logo圖片等)步驟:
1)創建程序的代碼
2)生成配置文件——用于獲得打包的資源,將資源保存在運行程序的電腦的臨時文件中,這里臨時文件是resources文件夾
3)修改python源代碼:因為此時的程序的資源目錄resources不一定在當前項目的目錄下,而是在打包后再次運行時一定要將資源解壓縮到臨時文件當中
4)創建配置文件:因為程序打包需要引用資源文件,因此必須手工地對資源的路徑進行定義,就需要根據打包程序生成一個.spec配置文件,
pyi-makespec -F *.py給定要打包的程序
5)編輯spc文件,定義我們需要使用資源路徑打開.spec文件——找到datas=[],項,修改為data = [("resources","resources")]里面放的是一個元組
6)程序打包:pyinstaller -F *.spec
7)若沒有則使用pyinstaller -F *.py,
8)打包結束后就會有*.exe文件了
'''import tkinter,os#導入創建窗體的相關模塊
import sys#導入與操作系統交互的模塊def get_resource_path(relative_path):#利用此函數實現資源路徑的定位if getattr(sys,"frozen",False):base_path = sys._MEIPASSelse:base_path = os.path.abspath(".")#獲得當前目錄路徑return os.path.join(base_path,relative_path)#獲得絕對路徑# image_path = image_path = r'C:\Users\jinlin\Desktop\python_further_study\GUI編程\resources'  + os.sep + 'linlianqin.gif'#只支持gif格式的圖片'''
下面這個語句提示無法找到路徑提示錯誤,這里特別需要注意:
1)修改代碼后需要重新按照以上步驟進行,尤其不能忘記了修改配置文件的datas
2)必須得先pyi-makespec -F *.py指定要打包的程序,再修改配置文件,再pyinstaller -F *.spec程序打包
'''print(get_resource_path(os.path.join("resources","linlianqin.gif")))
image_path =  get_resource_path(os.path.join("resources","linlianqin.gif"))#修改圖片的路徑,從上面定義的資源路徑中獲取圖,get_resource_path(os.path.join("臨時資源文件夾","圖片名稱"))class Mainwindow():#創建窗口類def __init__(self):root = tkinter.Tk()  # 創建主體窗口root.title('linlianqin')  # 定義窗體的名字root.geometry('500x500')  # 定義窗體的初始大小root.maxsize(1200, 1200)  # 設置窗口可以顯示的最大尺寸#---------------以下是對按鈕的設置---------------photo = tkinter.PhotoImage(file = image_path)#設置按鈕的外觀,這里是將圖片設置為按鈕的外觀button = tkinter.Button(root,text = 'linlianqin',image = photo,compound = 'bottom')#創建按鈕button.pack()#顯示按鈕root.mainloop()#顯示窗口if __name__ == '__main__':Mainwindow()#將窗體類實例化

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256874.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256874.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256874.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[js]BOM篇

一、什么是BOM BOM(Browser Object Model)即瀏覽器對象模型。BOM提供了獨立于內容 而與瀏覽器窗口進行交互的對象;由于BOM主要用于管理窗口與窗口之間的通訊,因此其核心對象是window;BOM由一系列相關的對象構成&#x…

透視校正

1、需要解決的問題: 怎么用圖像處理的辦法將梯形轉換為規則的矩形,進行一個視覺的透視校正 2、解決思路: 1)先二值化圖像,提取其輪廓(其中使用到填充,形態學知識) 2)…

雜項備忘

svn導出 export LANGzh_CN.UTF-8 && svn --username shuai --password shuai checkout svn://192.168.14.111/safe.qq.com /update/webapps/safe.qq.com mysqlsla --sortc_sum slow.log 本文轉自 liang3391 51CTO博客,原文鏈接:http://blog.51cto.com/liang…

安裝Pywin32后無法正常引用pyd文件

1. 首先在官方下載pywin32 2.下載完成后,無法正常引用pyd文件 3.解決方案: python安裝目錄\Lib\site-packages\pywin32_system32\* 至 C:\Windows\System32 轉載于:https://www.cnblogs.com/MonkeyKingK/p/4731960.html

pyinstaller運行時出現TCLError的錯誤該怎么辦?

1)修改代碼后需要重新按照以上步驟進行,尤其不能忘記了修改配置文件的datas 2)必須得先pyi-makespec -F *.py指定要打包的程序,再修改配置文件,再pyinstaller -F *.spec程序打包 3)確保配置文件已經修改成功,即將以下圖…

視覺統計計數方案

1、二值化分割 2、形態學 3、距離變換 4、再進行二值化 4、連通區域計算 輸入: 輸出:printf("統計玉米粒的個數 contours:%d\n",contours);//contours 17

SQL Server 查詢表備注信息的語句

--name 字段名稱--user_type_id --max_length 最大長度--is_nullable 是否允許空--remark 描述SELECT c.name, c.user_type_id, c.max_length, c.is_nullable, remark ex.value FROM sys.columns c inner JOIN sys.extended_properties ex ON ex.major_id c.object_id…

Filezilla 利用私鑰無密碼登錄

Filezilla是常用的FTP客戶端軟件,這里介紹一個用私鑰進行登錄 主機:sftp://yourserver 用戶名:yourname 點擊“編輯”-“設置”菜單打開設置對話框,找到“連接”-“SFTP”設置項 添加密鑰文件(A)”按鈕,添加私鑰文件,彈出對話框&a…

yo angualr-fullstatck 項目打包部署

yoeman使用grunt進行打包部署,直接運行grunt命令即可,期間會對代碼進行檢查,如果存在不規范的地方jshint會指定出來. grunt會對靜態資源進行打包而且對資源文件名進行了MD5作為版本戳. 1:修改se…

Visual Studio 快捷鍵使用方法

1、Ctrl k 和 Ctrl F 一起使用可以格式化代碼,讓其對齊工整。

學習筆記(43):Python實戰編程-事件處理簡介

立即學習:https://edu.csdn.net/course/play/19711/343105?utm_sourceblogtoedu 事件: 1.概念:就是給組件添加一定的功能,使得單擊或者是聚焦時產生一定的反應 2.知識點: 1)給組件綁定事件: 組件名.bind…

淺談MIPS地址對齊問題

1.什么叫地址對齊? RISC 下使用訪存指令讀取或寫入數據單元時,目標地址必須是所訪問之數據單元字節數的整數倍,這個叫做地址對齊。 2.計算機主要的架構分哪兩類?及其地址對齊在兩者的區別? 計算機主要的架構就分為兩類…

海信FW3010-5000H千兆防火墻

海信FW3010-5000H千兆防火墻 ◆處理帶寬達到3G; ◆支持1,500,000個并發連接; ◆支持高達25,000個高級訪問過濾; ◆真正的千兆硬件平臺; ◆雙機熱備功能; ◆完善的日志信息; ◆支持P2P過濾,多達14種P2P識別; ◆特有的災難恢復機制; ◆內嵌IDS模塊,也可和…

java File類 打印目錄樹狀結構(遞歸)

import java.io.File;/*** 遞歸遍歷**/ public class FieTree {public static void main(String[] args) {File f new File("D:/java筆記");printFile(f,0);}static void printFile(File file,int level){for(int i0;i<level;i){System.out.print("-")…

C++ vector.insert的用法

insert() 函數有以下三種用法: 在指定位置loc前插入值為val的元素,返回指向這個元素的迭代器, 在指定位置loc前插入num個值為val的元素 在指定位置loc前插入區間[start, end)的所有元素 .&#xff0c;查看源碼返回元素的大小個數 原函數 iterator insert(const_iterator…

學習筆記(44):Python實戰編程-單擊事件

立即學習:https://edu.csdn.net/course/play/19711/343106?utm_sourceblogtoedu 1.單擊事件&#xff1a;主要的單擊事件是鼠標左鍵單擊事件&#xff0c;一般是與按鈕綁定在一起 2.關鍵代碼&#xff1a;這里是以按鈕綁定組件單擊事件為例&#xff0c;單擊的響應是彈出簡單的對話…

samba

安裝配置samba&#xff1a; 準備工作&#xff1a; 173/udp(NetBIOS) 138/udp 139/tcp 445/tcp 這些端口已經啟動。 然后確定selinux已經關閉&#xff08;#getenforce&#xff09;。 一般我們裝好系統之后samba都會安裝的&#xff1a;yum list all samba* 這里我選用的是samba3x…

(1)dotnet開源電商系統-brnshopbrnMall 和老外開發的nopCommerce(dotnet兩套電商來PK--第一篇)...

一直想做電商軟件&#xff0c;但是實在不想學PHP了&#xff0c;所以前后關注了這兩個開源電商系統。一個是國人出品的&#xff0c;一個據說是俄羅斯人寫得&#xff08;不知道對不對&#xff09;。目前兩個開源軟件都在學習了解中&#xff0c;以下的博文可能會涉及到這兩套系統&…

hdoj 2022 海選女主角

Problem Descriptionpotato老師雖然很喜歡教書&#xff0c;但是迫于生活壓力&#xff0c;不得不想辦法在業余時間掙點外快以養家糊口。“做什么比較掙錢呢&#xff1f;篩沙子沒力氣&#xff0c;看大門又不夠帥...”potato老師很是無奈。“張藝謀比你還難看&#xff0c;現在多有…

linux 下的gettimeofday 函數在windows上的替換方案

方案一&#xff1a; #include <time.h> #ifdef WIN32 # include <windows.h> #else # include <sys/time.h> #endif #ifdef WIN32 int gettimeofday(struct timeval *tp, void *tzp) { time_t clock; struct tm tm; SYSTEMTIME wtm; Ge…