欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pyinstaller打包多個資源文件的超詳細(xì)教程(推薦!)

 更新時間:2022年12月27日 10:19:22   作者:Afool4U  
Pyinstaller是著名python打包module,軟件或者小工具用python寫好后,用pyinstaller 可以實現(xiàn)輕松打包,下面這篇文章主要給大家介紹了關(guān)于Pyinstaller打包多個資源文件的超詳細(xì)教程,需要的朋友可以參考下

有時我們需要將python源程序使用pyinstaller打包成可執(zhí)行exe發(fā)布,而除了我們常用的添加exe圖標(biāo)功能外,很多時候還希望能把各種圖片、聲音、字體等資源打包到exe中。尤其是在使用“-F”指令時,很多時候并不想看到如下圖的情況(程序打包到一個exe文件了,但資源文件仍然是孤零零的一大堆),這樣很不利于發(fā)布~~

那我們應(yīng)該怎么辦呢?網(wǎng)上很多教程都講的不夠詳細(xì),這里就不一一列舉了。我們采用最強(qiáng)大的方法,直接修改pyinstaller生成的spec文件(在這里因為源代碼是“main.py”,所以生成的spec默認(rèn)文件名為“main.spec”)。

首先,先確認(rèn)自己是否安裝pyinstaller(什么?我還沒有安裝?不好意思,請先查閱其他教程進(jìn)行安裝,完成后再來看本文章)

其次,確認(rèn)一下自己源程序內(nèi)import的所有三方庫是否均已安裝。這里可能會出現(xiàn)運(yùn)行時正常,打包好后報錯提示“XXX庫找不到”的情況。這是因為電腦上裝有多個Python,在運(yùn)行時調(diào)用的是環(huán)境A,而在打包時默認(rèn)的pyinstaller卻是在環(huán)境B下的。(什么?不會解決此問題?請先移步至別的文章學(xué)習(xí))

這兩步完成后,我們開始正式的打包。首先在python源文件的文件夾內(nèi)上方地址欄中輸入“cmd”后回車,cmd則會自動跳轉(zhuǎn)到當(dāng)前路徑,如下圖所示

輸入如下命令后回車

pyi-makespec -F -w -i favicon.ico main.py

其中“pyi-makespec”會生成一個spec文件(用于指定打包的配置),“-F”效果是打包成一個文件,“-w”則可以使打包后的程序運(yùn)行時不彈出黑窗口(在打包使用圖形界面庫的代碼,如tkinter、pyqt5、pygame時很有用)。“-i”后跟一個ico格式(其他格式會報錯)的圖標(biāo),則可以指定打包后程序的圖標(biāo)。“main.py”是你要打包程序的入口文件(其他被調(diào)用的文件會自動導(dǎo)入)

執(zhí)行后如下圖所示

可以看到多出了一個“main.spec”文件(本質(zhì)上是txt文本文件,可用記事本打開,是實現(xiàn)默認(rèn)/個性化打包的文件)

我們用記事本打開,可以看到如下內(nèi)容

可以看到剛剛執(zhí)行的一些附加條件,如不顯示console,設(shè)置圖標(biāo)為favcon.ico等。而我們在此問題中需要關(guān)注的是“datas=[]”,這里可以指定打包的資源文件。
接下來在python主文件最前面加入下面的代碼

import os
import sys

# 資源文件目錄訪問
def source_path(relative_path):
    # 是否Bundle Resource
    if getattr(sys, 'frozen', False):
        base_path = sys._MEIPASS
    else:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)


# 修改當(dāng)前工作目錄,使得資源文件可以被正確訪問
cd = source_path('')
os.chdir(cd)

這段代碼的功能是,當(dāng)程序未打包時,不改變當(dāng)前工作目錄;當(dāng)程序被pyinstaller打包成exe時,則會將工作目錄修改為一個臨時文件夾"C:\Users\23121\AppData\Local\Temp_MEI172602",屆時打包好的程序會將資源文件都放到此處。

接下來我們解析“datas=[]”,此列表內(nèi)可以加入一個元組(注意,此元組最多可以有兩個元素)指定要打包的資源和打包后在臨時文件夾內(nèi)的文件夾名稱。比如“datas=[(‘res’,‘.’)]”第一個res代表需要打包的文件夾名res,其內(nèi)部存放的全都是各種資源文件。第二個’.‘代表打包后在臨時文件中的文件夾名稱。因為我的程序資源原本是存放在main.py的同級目錄的,所有這里不需要運(yùn)行后將資源釋放到指定的文件夾中,直接使用’.'即可。如本身被調(diào)用的資源就在一個二級文件夾“resoure”里,則修改為“datas=[(‘res’,‘resource’)]”。

下圖為修改后的main.spec

然后創(chuàng)建一個名為“res”的文件夾,將需要打包的資源全部放進(jìn)去(注意:不需要把程序圖標(biāo)也放進(jìn)去,“favicon.ico”必須放到“main.py”同級目錄,否則在打包時會提示找不到圖標(biāo)文件)

接下來回到剛剛的cmd窗口中執(zhí)行下面的命令

pyinstaller main.spec

可以看到已經(jīng)成功打包了。

這時會多出一個dist文件夾,我們打包好的程序就在里面。

現(xiàn)在程序已經(jīng)能獨立運(yùn)行了,我們運(yùn)行程序后看一下資源被釋放到的路徑:

可以看到資源全部被臨時釋放到這里了。關(guān)閉程序后再次嘗試進(jìn)入此文件夾:

可以發(fā)現(xiàn)我們的臨時文件夾被清除了。

至此,這篇關(guān)于pyinstaller如何打包多個資源文件的教程就結(jié)束了。

總結(jié)

到此這篇關(guān)于Pyinstaller打包多個資源文件的文章就介紹到這了,更多相關(guān)Pyinstaller打包多個資源文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實現(xiàn)連續(xù)變量最優(yōu)分箱詳解--CART算法

    python實現(xiàn)連續(xù)變量最優(yōu)分箱詳解--CART算法

    今天小編就為大家分享一篇python實現(xiàn)連續(xù)變量最優(yōu)分箱詳解--CART算法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python實現(xiàn)簡單的四則運(yùn)算計算器

    Python實現(xiàn)簡單的四則運(yùn)算計算器

    相信大家在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時,就學(xué)習(xí)了簡單四則運(yùn)算表達(dá)式求解的一個算法,可惜一直沒有自己動手實現(xiàn)過這個算法。最近重拾數(shù)據(jù)結(jié)構(gòu)與算法,恰巧又正在用Python比較頻繁,所幸就用它來實現(xiàn)這個算法,雖然網(wǎng)上有很多代碼,不過作為一個學(xué)習(xí)者,還是應(yīng)當(dāng)親自動手實現(xiàn)。
    2016-11-11
  • python常見統(tǒng)計分析處理函數(shù)解讀

    python常見統(tǒng)計分析處理函數(shù)解讀

    這篇文章主要介紹了python常見統(tǒng)計分析處理函數(shù),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Pycharm中安裝Pygal并使用Pygal模擬擲骰子(推薦)

    Pycharm中安裝Pygal并使用Pygal模擬擲骰子(推薦)

    這篇文章主要介紹了Pycharm中安裝Pygal并使用Pygal模擬擲骰子,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Python入門之modf()方法的使用

    Python入門之modf()方法的使用

    這篇文章主要介紹了Python入門之modf()方法的使用,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • Python技法-序列拆分詳解

    Python技法-序列拆分詳解

    Python中的任何序列(可迭代的對象)都可以通過賦值操作進(jìn)行拆分,包括但不限于元組、列表、字符串、文件、迭代器、生成器等。
    2021-10-10
  • python機(jī)器學(xué)習(xí)實現(xiàn)決策樹

    python機(jī)器學(xué)習(xí)實現(xiàn)決策樹

    這篇文章主要為大家詳細(xì)介紹了python機(jī)器學(xué)習(xí)實現(xiàn)決策樹,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Python 中多態(tài)性的示例和類的繼承多態(tài)性詳解

    Python 中多態(tài)性的示例和類的繼承多態(tài)性詳解

    多態(tài)性通常在類的方法中使用,其中我們可以具有相同方法名稱的多個類,本文給大家介紹Python 中多態(tài)性的示例和類的繼承多態(tài)性詳解,需要的朋友可以參考下
    2023-10-10
  • Python?jpg快速轉(zhuǎn)png并調(diào)整大小方式

    Python?jpg快速轉(zhuǎn)png并調(diào)整大小方式

    這篇文章主要介紹了Python實現(xiàn)jpg快速轉(zhuǎn)png并調(diào)整大小方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • python等差數(shù)列求和公式前 100 項的和實例

    python等差數(shù)列求和公式前 100 項的和實例

    今天小編就為大家分享一篇python等差數(shù)列求和公式前 100 項的和實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02

最新評論