最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

輸入如下命令后回車

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

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

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

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

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

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

import os
import sys

# 資源文件目錄訪問(wèn)
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)前工作目錄,使得資源文件可以被正確訪問(wèn)
cd = source_path('')
os.chdir(cd)

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

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

下圖為修改后的main.spec

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

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

pyinstaller main.spec

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

這時(shí)會(huì)多出一個(gè)dist文件夾,我們打包好的程序就在里面。

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

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

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

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

總結(jié)

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

相關(guān)文章

  • Python 中獲取數(shù)組的子數(shù)組示例詳解

    Python 中獲取數(shù)組的子數(shù)組示例詳解

    在 Python 中獲取一個(gè)數(shù)組的子數(shù)組時(shí),可以使用切片操作,使用切片操作來(lái)獲取一個(gè)數(shù)組的一段連續(xù)的子數(shù)組,并且還可以使用一些方便的語(yǔ)法來(lái)簡(jiǎn)化代碼,這篇文章主要介紹了如何在 Python 中獲取數(shù)組的子數(shù)組,需要的朋友可以參考下
    2023-05-05
  • Python有序字典簡(jiǎn)單實(shí)現(xiàn)方法示例

    Python有序字典簡(jiǎn)單實(shí)現(xiàn)方法示例

    這篇文章主要介紹了Python有序字典簡(jiǎn)單實(shí)現(xiàn)方法,涉及Python使用OrderedDict方法進(jìn)行字典排序的相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • python實(shí)現(xiàn)圖像最近鄰插值

    python實(shí)現(xiàn)圖像最近鄰插值

    這篇文章主要介紹了python實(shí)現(xiàn)圖像最近鄰插值,圖像插值技術(shù)即Nearest?Neighbour?Interpolate是圖像超分辨率領(lǐng)域的重要研究方法之一,其目的是根據(jù)已有的低分辨率圖像,獲得高分辨率圖像,下面來(lái)看看文章具體的敘述,需要的朋友可以參考一下
    2022-03-03
  • PyCharm插件開(kāi)發(fā)實(shí)踐之PyGetterAndSetter詳解

    PyCharm插件開(kāi)發(fā)實(shí)踐之PyGetterAndSetter詳解

    這篇文章主要介紹了PyCharm插件開(kāi)發(fā)實(shí)踐-PyGetterAndSetter,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Pytorch evaluation每次運(yùn)行結(jié)果不同的解決

    Pytorch evaluation每次運(yùn)行結(jié)果不同的解決

    今天小編就為大家分享一篇Pytorch evaluation每次運(yùn)行結(jié)果不同的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 使用Python開(kāi)發(fā)一個(gè)簡(jiǎn)單的本地圖片服務(wù)器

    使用Python開(kāi)發(fā)一個(gè)簡(jiǎn)單的本地圖片服務(wù)器

    本文介紹了如何結(jié)合wxPython構(gòu)建的圖形用戶界面GUI和Python內(nèi)建的 Web服務(wù)器功能,在本地網(wǎng)絡(luò)中搭建一個(gè)私人的,即開(kāi)即用的網(wǎng)頁(yè)相冊(cè),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2025-04-04
  • 詳解python的幾種標(biāo)準(zhǔn)輸出重定向方式

    詳解python的幾種標(biāo)準(zhǔn)輸出重定向方式

    這篇文章是基于Python2.7版本,介紹常見(jiàn)的幾種標(biāo)準(zhǔn)輸出(stdout)重定向方式。顯然,這些方式也適用于標(biāo)準(zhǔn)錯(cuò)誤重定向。學(xué)習(xí)python的小伙伴們可以參考借鑒。
    2016-08-08
  • Python基于staticmethod裝飾器標(biāo)示靜態(tài)方法

    Python基于staticmethod裝飾器標(biāo)示靜態(tài)方法

    這篇文章主要介紹了Python基于staticmethod裝飾器標(biāo)示靜態(tài)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • python實(shí)現(xiàn)RSA加密(解密)算法

    python實(shí)現(xiàn)RSA加密(解密)算法

    RSA是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的絕大多數(shù)密碼攻擊,已被ISO推薦為公鑰數(shù)據(jù)加密標(biāo)準(zhǔn),下面通過(guò)本文給大家介紹python實(shí)現(xiàn)RSA加密(解密)算法,需要的朋友參考下
    2016-02-02
  • pd.DataFrame中的幾種索引變換的實(shí)現(xiàn)

    pd.DataFrame中的幾種索引變換的實(shí)現(xiàn)

    本文主要介紹了pd.DataFrame中的幾種索引變換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評(píng)論

河源市| 孟州市| 武夷山市| 阿图什市| 治多县| 威信县| 孙吴县| 永寿县| 绵竹市| 陈巴尔虎旗| 商城县| 墨玉县| 同德县| 龙陵县| 富民县| 德庆县| 南雄市| 株洲县| 娱乐| 松阳县| 通河县| 孙吴县| 邳州市| 延寿县| 金华市| 松原市| 彩票| 香港| 彩票| 遂川县| 惠州市| 浦北县| 仁怀市| 舞钢市| 江山市| 遂溪县| 枣庄市| 泗水县| 重庆市| 西充县| 黑龙江省|