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

PyInstaller打包Python腳本的使用示例

 更新時間:2025年04月30日 09:32:53   作者:Tiandaren  
本文主要介紹了PyInstaller打包Python腳本的使用示例,通過?PyInstaller,可以將Python腳本打包成?.exe文件(適用于?Windows)或適用于?macOS?和?Linux?的可執(zhí)行文件,感興趣的可以了解一下

1. 寫在前面

通常,在用 Python 編寫完一個腳本后,需要將它部署并集成到一個更大的項目中。常見的集成方式有以下幾種:

  • 使用 PyInstaller 打包。
  • 使用 Docker 打包。
  • 將 Python 嵌入到 C++ 代碼中,并封裝成類。
  • 將 Python 代碼轉(zhuǎn)換為 C++ 代碼。

本文介紹其中一種方式——使用 PyInstaller 打包。通過 PyInstaller,可以將 Python 腳本打包成 .exe 文件(適用于 Windows)或適用于 macOS 和 Linux 的可執(zhí)行文件,用戶無需安裝 Python 或任何相關(guān)依賴,便能直接運行程序。

主要優(yōu)勢:

  • 將 Python 腳本打包成獨立可執(zhí)行文件,方便分發(fā)和運行。
  • 支持單文件打包、圖標(biāo)定制、以及額外文件的捆綁。
  • 可選隱藏控制臺窗口,適合圖形化應(yīng)用(GUI)程序。

適用場景:

  • 發(fā)布桌面工具或命令行程序。
  • 讓沒有 Python 環(huán)境的用戶也能使用你的工具。
  • 分享自包含的 Python 項目,確保目標(biāo)機器能夠順利運行。

2. 打包指令解析與參數(shù)詳解

參數(shù)名描述示例類型必須默認值
--onefile將所有依賴文件打包為單個可執(zhí)行文件。pyinstaller --onefile example.pyboolFalse
--noconsole隱藏控制臺窗口(適用于 GUI 應(yīng)用)。pyinstaller --noconsole gui_app.pyboolFalse
--name指定生成的可執(zhí)行文件名稱。pyinstaller --name=my_app example.pystr源文件名(無擴展)
--icon設(shè)置可執(zhí)行文件的圖標(biāo)(需提供 .ico 文件)。pyinstaller --icon=app_icon.ico example.pystrNone
--add-data捆綁額外文件(如配置文件、靜態(tài)資源等)。pyinstaller --add-data "config.yaml;." example.pystrNone
--clean清理之前的構(gòu)建緩存,強制重新打包。pyinstaller --clean example.pyboolFalse
--hidden-import手動添加隱藏的依賴模塊(通常是自動檢測遺漏的依賴)。pyinstaller --hidden-import=requests example.pylist自動檢測

3. 基礎(chǔ)步驟

1. 安裝 PyInstaller

在終端(或命令行)中運行以下命令,安裝 PyInstaller:

pip install pyinstaller

2. 使用基礎(chǔ)命令進行打包

假設(shè)你有一個 Python 腳本 example_script.py,使用下面的命令將其打包為一個獨立的可執(zhí)行文件:

pyinstaller --onefile example_script.py
  • 該命令會將所有依賴項和代碼打包成一個單一的 .exe 文件。
  • 打包后,可以在 dist 目錄下找到生成的可執(zhí)行文件。

4. 常見的用法示例

示例 1:基礎(chǔ)打包

將 example_script.py 打包為一個單文件可執(zhí)行程序:

pyinstaller --onefile example_script.py

示例 2:自定義名稱和圖標(biāo)

將輸出文件命名為 my_program.exe,并指定圖標(biāo)文件為 app_icon.ico

pyinstaller --onefile --name=my_program --icon=app_icon.ico example_script.py

示例 3:捆綁額外文件

將配置文件 config.yaml 一起捆綁進可執(zhí)行文件:

pyinstaller --onefile --add-data "config.yaml;." example_script.py

注意:在 Windows 系統(tǒng)中,路徑分隔符用分號 ;,而在 macOS/Linux 中使用冒號 :。

示例 4:解決缺失依賴問題

如果在運行時遇到某個模塊丟失的錯誤,可以通過 --hidden-import 指定手動引入依賴:

pyinstaller --onefile --hidden-import=requests example_script.py

示例 5:隱藏控制臺窗口

適用于圖形界面(GUI)應(yīng)用程序,運行時隱藏控制臺窗口:

pyinstaller --onefile --noconsole gui_app.py

5. 注意事項(路徑)

  • 路徑問題:使用 --add-data 時,不同操作系統(tǒng)的路徑分隔符需特別注意。

    • Windows:"source;destination"
    • macOS/Linux:"source:destination"
  • 文件路徑問題:在代碼中訪問本地文件時,使用相對路徑獲取的文件可能會在打包后無法找到。此時,建議使用以下方式獲取正確的文件路徑:

BASE_DIR = os.path.dirname(os.path.realpath(sys.argv[0]))

6. 錯誤處理和日志記錄

在打包的 Python 應(yīng)用中,為了方便調(diào)試,可以加入錯誤處理代碼,將錯誤信息記錄到文件中,幫助定位問題。

try:
    # 代碼邏輯
    pass
except Exception as e:
    print("An error occurred:", e)
    with open("error_log.txt", "w") as f:
        f.write(str(e))

如果可執(zhí)行文件出現(xiàn)問題,能夠在 error_log.txt 中查看詳細的錯誤信息。

例如,

在這里插入圖片描述

這就是一個文件路徑錯誤的報錯,原因在于生成的可執(zhí)行文件是在 dist 目錄下,但是文件路徑是相對路徑,在 ../ 上,知道問題就可以解決了。否則,有時候連報錯都不知道在哪。

另外,如果想要更加優(yōu)雅地打包python,建議配合以下教程食用:
Python 參數(shù)配置使用 XML 文件的教程:輕松管理你的項目配置

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

相關(guān)文章

  • Python設(shè)計模式之中介模式簡單示例

    Python設(shè)計模式之中介模式簡單示例

    這篇文章主要介紹了Python設(shè)計模式之中介模式,簡單介紹了中介模式的概念、功能,并結(jié)合實例形式給出了Python定義與使用中介模式的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • python實現(xiàn)的簡單窗口倒計時界面實例

    python實現(xiàn)的簡單窗口倒計時界面實例

    這篇文章主要介紹了python實現(xiàn)的簡單窗口倒計時界面,實例分析了Python基于Tkinter操作windows窗口界面的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-05-05
  • python中的迭代和可迭代對象代碼示例

    python中的迭代和可迭代對象代碼示例

    這篇文章主要介紹了python中的迭代和可迭代對象代碼示例,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12
  • Python while true實現(xiàn)爬蟲定時任務(wù)

    Python while true實現(xiàn)爬蟲定時任務(wù)

    這篇文章主要介紹了Python爬蟲定時任務(wù)簡單實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • pytorch實現(xiàn)MNIST手寫體識別

    pytorch實現(xiàn)MNIST手寫體識別

    這篇文章主要為大家詳細介紹了pytorch實現(xiàn)MNIST手寫體識別,使用全連接神經(jīng)網(wǎng)絡(luò),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Python?GUI實現(xiàn)PDF轉(zhuǎn)Word功能

    Python?GUI實現(xiàn)PDF轉(zhuǎn)Word功能

    這篇文章主要介紹了如何使用?wxPython?創(chuàng)建一個簡單的圖形用戶界面(GUI)應(yīng)用程序,結(jié)合?pdf2docx?庫,實現(xiàn)將?PDF?轉(zhuǎn)換為?Word?文檔的功能,需要的可以參考下
    2024-12-12
  • 使用Python實現(xiàn)文字轉(zhuǎn)語音并播放功能

    使用Python實現(xiàn)文字轉(zhuǎn)語音并播放功能

    這篇文章主要給大家介紹了使用Python實現(xiàn)文字轉(zhuǎn)語音并播放功能,文中通過代碼示例給大家講解的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • python簡單實現(xiàn)圖片文字分割

    python簡單實現(xiàn)圖片文字分割

    這篇文章主要為大家詳細介紹了python簡單實現(xiàn)圖片文字分割,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python爬取附近餐館信息代碼示例

    Python爬取附近餐館信息代碼示例

    這篇文章主要介紹了Python爬取附近餐館信息代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 解決python3中os.popen()出錯的問題

    解決python3中os.popen()出錯的問題

    在本篇文章里小編給大家整理的是一篇關(guān)于解決python3中os.popen()出錯的問題的相關(guān)內(nèi)容,有興趣的朋友們可以參考下。
    2020-11-11

最新評論