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

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

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

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

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

PyInstaller

1. 安裝

pip install pyinstaller

2. 基本用法

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

3. 常用參數(shù)

參數(shù)說(shuō)明
--onefile將所有依賴打包成一個(gè)單獨(dú)的可執(zhí)行文件。沒(méi)有這個(gè)選項(xiàng)時(shí),生成的可執(zhí)行文件將依賴于多個(gè)文件
--windowed打包為 GUI 應(yīng)用程序,不顯示控制臺(tái)窗口(僅適用于 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手動(dòng)指定需要包含的模塊。如果某些模塊在運(yùn)行時(shí)動(dòng)態(tài)導(dǎo)入,PyInstaller 可能無(wú)法自動(dòng)檢測(cè)到這些依賴項(xiàng)
--exclude-module手動(dòng)排除某些模塊

示例用法如下:

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)行時(shí)會(huì)生成一個(gè) .spec 文件,這個(gè)文件定義了打包的所有配置。你可以編輯這個(gè)文件來(lái)自定義打包過(guò)程。

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

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

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

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

pyinstaller my_program.spec

5. 常見問(wèn)題

pyinstaller 執(zhí)行后報(bào)錯(cuò)通常為以下類似問(wèn)題,手動(dòng)導(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

同時(shí)確保安裝了 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:生成一個(gè)包含所有依賴的目錄
  • --onefile:將所有內(nèi)容打包成一個(gè)單一的可執(zhí)行文件,pip install zstandard 可減小大小
  • --follow-imports:自動(dòng)導(dǎo)入所需模塊
  • --plugin-enable:用于啟用特定的編譯插件,例如:tkinter、PyQt5、Numpy等
  • --show-progress:展示打包進(jìn)度
  • --windows-icon:指定程序圖標(biāo)
  • --windows-disable-console:去掉控制臺(tái)窗口
  • --lto=yes:?jiǎn)⒂面溄訒r(shí)優(yōu)化(Link Time Optimization),可以生成更小、更快的二進(jìn)制文件。

4. 其他用途

編譯 .py 文件為 .pyd

nuitka --module your_script.py

總結(jié)

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

相關(guān)文章

最新評(píng)論

江门市| 白山市| 麦盖提县| 基隆市| 南漳县| 静宁县| 岑巩县| 赤水市| 白城市| 烟台市| 伊川县| 临泽县| 军事| 施甸县| 邯郸县| 华容县| 中西区| 治县。| 凤台县| 仙居县| 金塔县| 临海市| 嘉定区| 上思县| 曲阳县| 措美县| 辽源市| 同德县| 吴川市| 夏河县| 铜山县| 嘉善县| 富平县| 莱芜市| 保山市| 蕉岭县| 澜沧| 甘泉县| 华池县| 常山县| 西吉县|