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

Python代碼打包為單個可執(zhí)行文件實現(xiàn)過程

 更新時間:2025年09月25日 09:32:19   作者:Q.V.Q  
文章對比了Nuitka與PyInstaller兩種Python打包工具,前者將代碼編譯為C/C++生成高效執(zhí)行文件,但打包慢且部分庫不兼容;后者可生成單文件且易用,但運(yùn)行時產(chǎn)生臨時文件,均需處理依賴項,PyInstaller支持自定義配置文件,Nuitka可通過插件優(yōu)化性能

目前最常用的兩種方法是使用 NuitkaPyInstaller

  • PyInstaller:這是一個非常流行的工具,可以將Python腳本打包為單個可執(zhí)行文件,支持Windows、macOS和Linux。它還能夠自動檢測并包含大多數(shù)Python包和庫。優(yōu)點是簡單易用,缺點是在運(yùn)行時會釋放一堆臨時文件。
  • Nuitka: 是將Python代碼編譯為C/C++代碼的編譯器,然后再使用C/C++編譯器生成可執(zhí)行文件。與其他打包工具相比,它能產(chǎn)生性能更優(yōu)的可執(zhí)行文件。優(yōu)點是打包后文件執(zhí)行效率高,缺點是打包速度慢且某些庫不兼容。

PyInstaller

1. 安裝

pip install pyinstaller

2. 基本用法

pyinstaller main.py
pyinstaller --onefile main.py
pyinstaller --onefile --name=hello main.py

3. 常用參數(shù)

參數(shù)說明
--onefile將所有依賴打包成一個單獨的可執(zhí)行文件。沒有這個選項時,生成的可執(zhí)行文件將依賴于多個文件
--windowed打包為 GUI 應(yīng)用程序,不顯示控制臺窗口(僅適用于 Windows 和 macOS)
--name指定生成的可執(zhí)行文件的名稱
--icon為生成的可執(zhí)行文件指定圖標(biāo)文件。圖標(biāo)文件通常為 .ico(Windows)或 .icns(macOS)格式。
--add-data添加額外的數(shù)據(jù)文件。格式為 source:destination,其中 source 是本地路徑,destination 是可執(zhí)行文件內(nèi)的路徑。
--hidden-import手動指定需要包含的模塊。如果某些模塊在運(yùn)行時動態(tài)導(dǎo)入,PyInstaller 可能無法自動檢測到這些依賴項
--exclude-module手動排除某些模塊

示例用法如下:

pyinstaller --onefile \
            --windowed \
            --name=my_program \
            --icon=assets/app_icon.ico \
            --add-data="resources/config.json;resources" \
            --hidden-import=json \
            main.py

4. 配置文件

PyInstaller 在首次運(yùn)行時會生成一個 .spec 文件,這個文件定義了打包的所有配置。你可以編輯這個文件來自定義打包過程。

在生成的 my_program.spec 文件中,你可以自定義一些高級選項,比如添加額外的數(shù)據(jù)文件、指定打包目錄等。

例如,添加一個額外的數(shù)據(jù)文件到 datas 列表中:

datas=[('data_folder/*', 'data')]

使用自定義的 .spec 文件進(jìn)行打包:

pyinstaller my_program.spec

5. 常見問題

pyinstaller 執(zhí)行后報錯通常為以下類似問題,手動導(dǎo)入模塊即可解決

# 未正常導(dǎo)入:Crypto.Cipher.PKCS1_v1_5 
ImportError: cannot import name 'PKCS1_v1_5' from 'Crypto.Cipher'

# 未正常導(dǎo)入:Crypto.PublicKey.RSA
ImportError: cannot import name 'RSA' from 'Crypto.PublicKey'

# 未正常導(dǎo)入:boto3
ModuleNotFoundError: No module named 'boto3'

# 未正常導(dǎo)入:tqdm
ModuleNotFoundError: No module named 'tqdm'

Nuitka

1. 安裝

pip install nuitka

同時確保安裝了 C 編譯器,如 gcc(Linux)、clang(macOS)、msvc(Windows)或者 MinGW-w64(Windows)。

在 Windows 上,建議使用 MinGW-w64。

2. 打包命令

nuitka --standalone main.py

# 使用pandas
nuitka --standalone --onefile --plugin-enable=pandas  script.py

# 使用tkinter、numpy
nuitka --standalone --follow-imports --plugin-enable=tk-inter --plugin-enable=numpy example.py

# 打包為單文件
nuitka --standalone --onefile --show-progress  --lto=yes script.py

3. 常用參數(shù)

  • --standalone:生成一個包含所有依賴的目錄
  • --onefile:將所有內(nèi)容打包成一個單一的可執(zhí)行文件,pip install zstandard 可減小大小
  • --follow-imports:自動導(dǎo)入所需模塊
  • --plugin-enable:用于啟用特定的編譯插件,例如:tkinter、PyQt5、Numpy等
  • --show-progress:展示打包進(jìn)度
  • --windows-icon:指定程序圖標(biāo)
  • --windows-disable-console:去掉控制臺窗口
  • --lto=yes:啟用鏈接時優(yōu)化(Link Time Optimization),可以生成更小、更快的二進(jìn)制文件。

4. 其他用途

編譯 .py 文件為 .pyd

nuitka --module your_script.py

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

永川市| 琼海市| 陇西县| 囊谦县| 泾阳县| 临高县| 河东区| 米林县| 九龙城区| 永康市| 全椒县| 同江市| 缙云县| 驻马店市| 眉山市| 芒康县| 扎赉特旗| 城口县| 扎囊县| 通辽市| 会东县| 离岛区| 承德市| 阿荣旗| 炉霍县| 通海县| 满城县| 屯留县| 南澳县| 高密市| 伽师县| 固阳县| 罗田县| 旬阳县| 九龙坡区| 分宜县| 正宁县| 肃宁县| 封开县| 上犹县| 郁南县|