使用PyInstaller?打包配置文件
PyInstaller打包配置文件
在很多項(xiàng)目完成時(shí),我們需要將python文件打包發(fā)布為一個(gè)exe應(yīng)用程序,在python 中,打包就變得很簡(jiǎn)單了。
此文章僅介紹最簡(jiǎn)單的單個(gè)python文件打包,以及資源打包,后續(xù)復(fù)雜的,實(shí)踐后再做更新。
(一) 僅打包python文件
Step1.
安裝 PyInstaller 第三方庫(kù)。
pip install PyInstaller
Step2.
打包python文件。
pyinstaller -F -i tubiao.ico Test.py
運(yùn)行結(jié)束后在當(dāng)前文件夾會(huì)有文件夾(dist,build),打包好的exe就在dist中。
(二) 打包python文件與資源文件
很多時(shí)候,我們需要讀取某個(gè)路徑下的配置文件以及其他資源文件等等,而每次發(fā)布時(shí)打包好python程序后再拷貝,很繁瑣而且容易加大因?yàn)槿斯ざ鸬腻e(cuò)誤率。
首先,得在python程序中對(duì)讀取的資源文件或者配置文件路徑做一下處理。
# 處理資源路徑或者配置文件路徑 def process_path(path): if getattr(sys, 'frozen', False): #是否Bundle Resource base_path = sys._MEIPASS else: base_path = os.path.abspath(".") return os.path.join([base_path, path)
在傳入資源文件或者配置文件前,現(xiàn)將路徑使用process_path函數(shù)處理一下。
接下來(lái)就是資源文件或者配置文件與python程序一起打包了。
Step1.
生成spec文件
pyi-makespec -F -i tubiao.ico Test.py
運(yùn)行命令后會(huì)在當(dāng)前文件夾下生成Test.spec 文件
Step2.
編輯Test.spec文件
在Test.py中我們需要去讀取當(dāng)前文件夾下Conf.json 配置文件,如果此文件不存在,則退出程序。
現(xiàn)在將Conf.json打包進(jìn)exe中(程序中需要對(duì)路徑做處理,即(二)中提到的路徑處理函數(shù)).
修改Test.spec 為:
在data中將資源文件或者配置文件添加進(jìn)去。
Step3.
打包spec文件
pyinstaller Test.spec
打包完成,無(wú)任何報(bào)錯(cuò)信息,生成的exe在dist中,測(cè)試Test.exe,將其拷貝至沒(méi)有Conf.json的文件夾下運(yùn)行,程序正常運(yùn)行,打包成功。
pyinstaller打包后,配置文件無(wú)法正常讀取問(wèn)題
import os file = os.path.dirname(os.path.abspath(__file__)) cf = configparser.ConfigParser() print(file) cf.read(file+'/data.ini')
先獲取絕對(duì)路徑在讀取
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python利用json和pyecharts畫(huà)折線圖實(shí)例代碼
這篇文章主要介紹了python利用json和pyecharts畫(huà)折線圖實(shí)例,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12Python標(biāo)準(zhǔn)庫(kù)內(nèi)置函數(shù)complex介紹
這篇文章主要介紹了Python標(biāo)準(zhǔn)庫(kù)內(nèi)置函數(shù)complex介紹,本文先是講解了complex的作用和使用注意,然后給出了使用示例,需要的朋友可以參考下2014-11-11C++和python實(shí)現(xiàn)阿姆斯特朗數(shù)字查找實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于C++和python實(shí)現(xiàn)阿姆斯特朗數(shù)字查找的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Python?GDAL庫(kù)在Anaconda環(huán)境中的配置方法
這篇文章主要介紹了Python?GDAL庫(kù)在Anaconda環(huán)境中的配置,本文介紹在Anaconda環(huán)境下,安裝Python中柵格、矢量等地理數(shù)據(jù)處理庫(kù)GDAL的方法,需要的朋友可以參考下2023-04-04數(shù)組保存為txt, npy, csv 文件, 數(shù)組遍歷enumerate的方法
今天小編就為大家分享一篇數(shù)組保存為txt, npy, csv 文件, 數(shù)組遍歷enumerate的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07python標(biāo)準(zhǔn)庫(kù)OS模塊詳解
這篇文章主要介紹了python標(biāo)準(zhǔn)庫(kù)OS模塊詳細(xì)介紹,需要的朋友可以參考下2020-03-03python基本算法之實(shí)現(xiàn)歸并排序(Merge sort)
這篇文章主要給大家介紹了關(guān)于python基本算法之實(shí)現(xiàn)歸并排序(Merge sort)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09基于python實(shí)現(xiàn)matlab filter函數(shù)過(guò)程詳解
這篇文章主要介紹了基于python實(shí)現(xiàn)matlab filter函數(shù)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06python實(shí)現(xiàn)自冪數(shù)的示例代碼
這篇文章主要介紹了python實(shí)現(xiàn)自冪數(shù)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03