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

pyinstaller使用大全

 更新時間:2023年02月15日 10:46:33   作者:yinchao163  
這篇文章主要介紹了pyinstaller使用大全,pyinstaller可以方便地將腳本編譯成exe,本文結(jié)合實例代碼給大家詳細(xì)講解,需要的朋友可以參考下

背景

在python工程完成開發(fā)以后需要編譯成可執(zhí)行文件,如此一來生產(chǎn)環(huán)境和開發(fā)環(huán)境隔離開來便于用戶使用(可獨立使用,無需配置python開發(fā)環(huán)境),pyinstaller可以方便地將腳本編譯成exe

1. pyinstaller的安裝

pip install pyinstaller

2. pyinstaller工作原理

  • 先生成一個spec文件(手動或自動均可),該文件決定了實際編譯規(guī)則
  • 再自動生成一個build文件夾,所有自動編譯的中間產(chǎn)物都放在其中
  • 最后生成dist文件夾,存放編譯輸出

3. pyinstaller打包成exe

3.1 最簡單(單個文件):

pyinstaller xxx.py

一般搞法(多文件)

  • 先自動生成spec文件: pyi-makespec xxx.py
  • 再根據(jù)自己的實際需求手動修改spec文件
  • 最后統(tǒng)一installer: pyinstaller xxx.spec

F 生成一個單一可執(zhí)行文件【常用】

w 禁止彈出控制臺【常用】

i 修改exe生成的圖標(biāo)【常用】

h 打印幫助信息

v 打印版本信息

d 生成帶各種依賴的文件夾,包含exe,dll,以及其他文件

p 指定搜索路徑

3.3 spec文件解析

Analysis: 
    ['Console.py','xxx.py'...] <- 此處列出的腳本生成exe后會按順序依次執(zhí)行!
    pathex <- 此處為搜索路徑
    binaries <- 非python的庫文件
    datas <- ini文件,字體,圖片,icon什么的
    pure <- python模塊
PYZ: <- 不用管
EXE: <- 輸出配置
COLLECT: <- 不用管

3.4 打包dll

在生成的spec文件中修改datas字段,形如:

3.5 利用upx壓縮exe

UPX下載地址

運行命令: pyinstaller xxx.spec --upx [輸出路徑]

4. 常見問題

4.1 打包后的文件太大了

方法1 —— 虛擬環(huán)境下打包

造成打包文件太大的主要原因是打包了太多不必要的庫,比如安裝了anaconda?;蛘咦约簆ip install了太多庫。顯然要想解決該問題核心就是不要打包那么多的庫。

最好的辦法是:在一個虛擬環(huán)境中單獨打包,只打包該程序執(zhí)行所必備的依賴庫

具體操作方法是:

  • 先安裝 pipenv工具,在該工具的幫助下創(chuàng)建虛擬環(huán)境單獨打包

pip install pipenv

  • 進(jìn)入虛擬環(huán)境:

pipenv shell

  • 嘗試運行一下應(yīng)用程序,缺什么包就單獨pip install安裝什么包

python xxx.py

  • 當(dāng)前面的應(yīng)用程序都可以用的時候再安裝pyinstaller,然后進(jìn)行打包即可

pip install pyinstaller ,pyinstaller -Fw xxx.py

  • 退出虛擬環(huán)境

exit

關(guān)于pipenv更詳細(xì)使用請參閱

方法2 —— 排除不相干的包

在*.spec的excludes欄目中添加對應(yīng)的, 常見: excludes=['matplotlib', 'pandas', 'scipy'],

也可以通過命令行排除: pyinstaller.exe --exclude xxx_package yyy.py

4.2 明明python xxx.py能正常使用, 而打包成exe卻無法使用了

主要有以下幾種現(xiàn)象:

  • 編譯后的exe在打包的機器上運行良好,放到別人機器上不能用了。
  • python xxx.py能正常使用, 而打包成exe卻無法使用了。

目前所知主要是兩個方面的原因:

  • 路徑問題。
  • 依賴包的問題。

python腳本執(zhí)行的默認(rèn)路徑和exe打包后的路徑是不一樣的,如果軟件中存在文件讀取等操作,很有可能導(dǎo)致exe找不到資源而運行出錯。

解決該問題的方法是路徑凍結(jié)

#frozen_dir.py
import os,sys
def app_path():
    if hasattr(sys, 'frozen'):
        return os.path.dirname(sys.executable)
    return os.path.dirname(__file__)

添加frozen_dir.py后,app_path會生成一個絕對準(zhǔn)確的基地址,所有的路徑以此為基準(zhǔn),如下所示:

import frozen_dir
SETUP_DIR = frozen_dir.app_path()

依賴包的問題往往出現(xiàn)在:在一開始就pyinstaller打包過程序,后續(xù)開發(fā)時又安裝了新模塊,如此一來python xxx.py可以正常執(zhí)行腳本,但是運行xxx.exe報錯。

錯誤根源可能是:pyinstaller是不會更新__pycache__文件夾的,所以后面增加的模塊它不知道,也不會打包進(jìn)去的:

解決方法非常簡單:把打包中生成的資源全部刪除【__ pycache __, build, dist】,然后重新打包即可

4.3 打包后exe執(zhí)行速度太慢了啊

解決方法1:精簡代碼,刪除不必要的內(nèi)容

解決方法2: 用-D -w 打包,缺點是文件太多

pyinstaller -D -w -i icon.ico XX.py

FAQ A: -F打包成的exe可以用,帶上-w參數(shù)去掉console框就不能用了

Q:暫未解決(跟源碼中需要獲取cmd執(zhí)行輸出有關(guān))

A:-i增加自定義icon功能后,目錄下不含icon資源exe執(zhí)行異常

Q:暫未解決

A: No module named pkg_resources

Q: 有可能是setuptools版本太高所致(請參考文末擴(kuò)展知識),pip install setuptools==44.0.0 即可

A:failed to execute pyi_rth_pkgres

Q: 有可能是pyinstaller的版本問題,卸載重新安裝一下,參考:

擴(kuò)展:

Pyinstaller No module named pkg_resources.py2_warn

我通過降低setuptools版本到 44.0.0 后成功解決問題。

pip install  setuptools==44.0.0?

參考鏈接

pyinstaller踩坑指南

pyinstaller使用詳細(xì)教程

pyinstaller官網(wǎng)手冊

spec修改示例

py,pyc,pyo,pyd的講解,不同需求不同打包策略

Pyinstaller打包附帶DLL、圖標(biāo)和壓縮EXE方法

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

相關(guān)文章

  • Python實現(xiàn)全自動安裝第三方庫的方法

    Python實現(xiàn)全自動安裝第三方庫的方法

    這篇文章主要介紹了Python實現(xiàn)全自動安裝第三方庫的方法,一說Python要安裝哪個模塊,我們第一反應(yīng),win+r輸入cmd,pip?instll安裝,但是如果換電腦了,Python第三方庫那么多,難道要一次一次的敲擊pip?install,本文就介紹一個簡單的方法解放雙手,需要的朋友可以參考下
    2023-07-07
  • python查看文件大小和文件夾內(nèi)容的方法

    python查看文件大小和文件夾內(nèi)容的方法

    今天小編就為大家分享一篇python查看文件大小和文件夾內(nèi)容的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Django集成MongoDB實現(xiàn)過程解析

    Django集成MongoDB實現(xiàn)過程解析

    這篇文章主要介紹了Django集成MongoDB實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • Python實戰(zhàn)之MNIST手寫數(shù)字識別詳解

    Python實戰(zhàn)之MNIST手寫數(shù)字識別詳解

    MNIST數(shù)據(jù)集是機器學(xué)習(xí)領(lǐng)域中非常經(jīng)典的一個數(shù)據(jù)集,由60000個訓(xùn)練樣本和10000個測試樣本組成,每個樣本都是一張28 * 28像素的灰度手寫數(shù)字圖片。本文主要介紹了通過 MNIST實現(xiàn)手寫數(shù)字識別,需要的可以參考一下
    2022-01-01
  • python列表推導(dǎo)式 經(jīng)典代碼

    python列表推導(dǎo)式 經(jīng)典代碼

    這篇文章主要介紹了python列表推導(dǎo)式,文章內(nèi)容附有經(jīng)典的詳細(xì)代碼,感興趣的小伙按可以參考下面文章具體內(nèi)容
    2021-10-10
  • Python中取整的幾種方法小結(jié)

    Python中取整的幾種方法小結(jié)

    這篇文章主要介紹了Python中取整的幾種方法,其中包括向下取整、四舍五入取整、向上取整以及分別取整數(shù)部分和小數(shù)部分。分別都給出了示例代碼,相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒價值,需要的朋友可以參考借鑒。
    2017-01-01
  • python最小生成樹kruskal與prim算法詳解

    python最小生成樹kruskal與prim算法詳解

    這篇文章主要為大家詳細(xì)介紹了python最小生成樹kruskal與prim算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 使用Python解析Chrome瀏覽器書簽的示例

    使用Python解析Chrome瀏覽器書簽的示例

    這篇文章主要介紹了使用Python解析Chrome瀏覽器書簽的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • 淺談python中頻繁的print到底能浪費多長時間

    淺談python中頻繁的print到底能浪費多長時間

    今天小編就為大家分享一篇淺談python中頻繁的print到底能浪費多長時間,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • pytorch?膨脹算法實現(xiàn)大眼效果

    pytorch?膨脹算法實現(xiàn)大眼效果

    在PS中,我們可以利用液化工具對人像進(jìn)行瘦臉、放大眼睛等系列的常規(guī)操作。今天我們來了解一下這些操作的算法原理,并用pytorch?膨脹算法來實現(xiàn)大眼效果,感興趣的可以了解一下
    2021-11-11

最新評論

青海省| 辽中县| 白朗县| 徐汇区| 龙门县| 上饶县| 嘉祥县| 双峰县| 福泉市| 鹤庆县| 濮阳市| 扎鲁特旗| 清苑县| 汶川县| 商丘市| 临桂县| 普定县| 金山区| 呼玛县| 龙州县| 民丰县| 江源县| 双辽市| 日照市| 万全县| 延寿县| 竹山县| 邢台县| 桑日县| 丘北县| 嘉荫县| 石狮市| 邓州市| 融水| 射阳县| 闻喜县| 孝义市| 饶阳县| 长白| 盘锦市| 桐柏县|