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

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

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

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

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

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

其次,確認一下自己源程序內(nèi)import的所有三方庫是否均已安裝。這里可能會出現(xiàn)運行時正常,打包好后報錯提示“XXX庫找不到”的情況。這是因為電腦上裝有多個Python,在運行時調(diào)用的是環(huán)境A,而在打包時默認的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”則可以使打包后的程序運行時不彈出黑窗口(在打包使用圖形界面庫的代碼,如tkinter、pyqt5、pygame時很有用)。“-i”后跟一個ico格式(其他格式會報錯)的圖標,則可以指定打包后程序的圖標。“main.py”是你要打包程序的入口文件(其他被調(diào)用的文件會自動導(dǎo)入)

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

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

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

可以看到剛剛執(zhí)行的一些附加條件,如不顯示console,設(shè)置圖標為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的同級目錄的,所有這里不需要運行后將資源釋放到指定的文件夾中,直接使用’.'即可。如本身被調(diào)用的資源就在一個二級文件夾“resoure”里,則修改為“datas=[(‘res’,‘resource’)]”。

下圖為修改后的main.spec

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

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

pyinstaller main.spec

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

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

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

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

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

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

    PyCharm插件開發(fā)實踐之PyGetterAndSetter詳解

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

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

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

    使用Python開發(fā)一個簡單的本地圖片服務(wù)器

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

    詳解python的幾種標準輸出重定向方式

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

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

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

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

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

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

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

最新評論

团风县| 乐至县| 崇礼县| 兰溪市| 资阳市| 仁布县| 红河县| 永和县| 胶南市| 阜南县| 嘉义市| 清流县| 青河县| 兴国县| 滕州市| 达孜县| 扶余县| 太仓市| 禹州市| 西昌市| 临清市| 武平县| 元谋县| 襄汾县| 宝清县| 旅游| 新津县| 万源市| 四川省| 阿拉善左旗| 韩城市| 大港区| 交城县| 南溪县| 瑞安市| 中山市| 元阳县| 共和县| 承德县| 淮北市| 蓬莱市|