摘要:起因是從某發現了一個站掛機助手,依賴于直播的一個庫,作者的處理方式是將依賴的庫打包為,然后使用進行調用。它能夠在等操作系統下將源文件打包,通過對源文件打包,程序可以在沒有安裝的環境中運行,也可以作為一個獨立文件方便傳遞和管理。
起因是從某 hub 發現了一個B站掛機助手,依賴于直播的一個庫,作者的處理方式是將依賴的庫打包為 exe,然后使用 python 進行調用。
然后因為依賴的 live 庫版本太舊有 bug,作者也沒有更新打包的 exe 文件,只能自己動手,進行替換。
準備工作首先當然是安裝 pyinstaller
pip install pyinstaller
PyInstaller 是一個十分有用的第三方庫,可以用來打包 python 應用程序,打包完的程序就可以在沒有安裝 Python 解釋器的機器上運行了。使用它能夠在 Windows、Linux、 Mac OS X 等操作系統下將 Python 源文件打包,通過對源文件打包, Python 程序可以在沒有安裝 Python 的環境中運行,也可以作為一個 獨立文件方便傳遞和管理。
一般的用法網上能搜出一大把,常規流程:
pyinstaller -F helloworld.py
其中,-F 表示打包成多帶帶的 .exe 文件,這時生成的 .exe 文件會比較大,而且運行速度回較慢。
另外,
-i 還可以指定可執行文件的圖標;
-w 表示去掉控制臺窗口,這在 GUI 界面時非常有用。不過如果是命令行程序的話那就把這個選項刪除吧!
執行步驟:
1、在腳本目錄生成 helloworld.spec 文件;打包靜態文件
2、創建一個 build 目錄;
3、寫入一些日志文件和中間流程文件到 build 目錄;
4、創建 dist 目錄;
5、生成可執行文件到 dist 目錄;
當你的代碼需要調用一些圖片和資源文件的,這是不會自動導入的,需要你自己手動復制進去才行。不然 exe 文件運行時命令窗口會報錯找不到這個文件。
還是先看常規做法;
使用 pyi-makespec 生成預處理文件:
pyi-makespec -F helloworld.py
此時會生成一個 .spec 文件,這個文件會告訴 pyinstaller 如何處理你的腳本,pyinstaller 創建一個 exe 的文件就是依靠它里面的內容進行執行的。
修改預處理文件,將需要的靜態資源加入進去:
// 修改前 datas=[] // 修改后 datas=[("test.txt",".")]
最后,執行生成 exe 文件:
pyinstaller helloworld.spec
以上內容主要摘錄自 https://zhuanlan.zhihu.com/p/...
當然,我沒那么幸運,按照一頓操作并沒有成功,對于預處理文件,上面寫的也不是很清楚,于是研究了下,最終也算是成功了。
配置文件是不需要打包的,程序運行時也會自動讀取,根據錯誤信息,我這個需要依賴的有兩個 data.db 文件,經過搜索分別在當前目錄的 dyn 和 substance 文件夾下,所以你需要這么寫:
datas=[("dyndata.db", "dyn"), ("substancedata.db", "substance")]
解釋下,datas 是一個數組,每一個文件用 (a,b) 進行描述,其中 a 是源文件,也就是你要打包的文件,記得轉義符;
b 是目標路徑,也就是最終打包 exe 執行時,它需要把這些靜態資源解壓出來,那么解壓到哪里呢就需要 b 來指定,它是一個文件夾,保險起見我設置跟原來一樣的名字(路徑)。
如果靜態資源比較少的話,可以使用命令行來快速打包:
pyinstaller -F showlist.py --add-data poetry;poetry --add-data list.txt;.
使用的是 --add-data 命令,后面跟源與目標路徑,中間用分號分割,這種方式倒是不用轉義了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43906.html
摘要:現在,主流的工具有,本文只介紹的使用。準備工作開發環境和工具可以支持和。 python是腳本語言,如果你在開發機器上執行當然會很方便,可是如果你幫他人寫了個腳本,想在他人機器上運行,可能會遇到點困難。 為了讓腳本在他人機器上順利執行,你首先要幫他安裝python解釋器,如果你import了一些庫比如pandas,那這個也需要安裝,甚至相關的依賴也需要安裝。這個時間成本顯然是很大的,這部...
摘要:打包成單文件所使用的命令為打包成文件夾所使用的命令為不管是哪種打包方式都會留下一個文件。這樣我們只需將腳本文件和腳本文件放置到同一文件夾下,運行我們的腳本。可以看到已經完美的反編譯出其中的腳本好了,相信大家已經明白了反編譯的原理。 近期閱讀了一篇很感興趣的文章,為免后續文章被刪無法再閱讀,現...
摘要:如果覺得安裝太慢,還可以加入國內鏡像下載我比較習慣用豆瓣的。之前的文章有講過滴常用源鏡像清華阿里云中國科技大學華中理工大學山東理工大學豆瓣在里輸入打包成的命令。 ??導語 這篇文章是我之前很想寫的,但是拖到了今天! 咳咳咳......主要是有粉絲讓我安排一下!寵粉.jpg 很多新手小伙伴兒...
摘要:如果覺得安裝太慢,還可以加入國內鏡像下載我比較習慣用豆瓣的。之前的文章有講過滴常用源鏡像清華阿里云中國科技大學華中理工大學山東理工大學豆瓣在里輸入打包成的命令。 ?導語 這篇文章是我之前很想寫的,但是拖到了今天! 咳咳咳......主要是有粉絲讓我安排一下!寵粉.jpg 很多新手小伙伴兒是...
閱讀 1258·2021-09-22 15:18
閱讀 2588·2021-09-22 15:17
閱讀 2216·2019-08-30 15:55
閱讀 1566·2019-08-30 15:54
閱讀 1032·2019-08-30 13:12
閱讀 618·2019-08-30 13:12
閱讀 1672·2019-08-29 11:33
閱讀 1431·2019-08-26 17:04