Pyinstaller & Nuitka 打包瘦身筆記 [Kurt]

閱讀時間約 1 分鐘



只打包scipy特定模組, import時要只import要的部份

然後打包時指定排除

#排除import以外的庫
pyinstaller --onefile --exclude-module=scipy.* --exclude-module=scipy.interpolate.* --exclude-module=scipy.signal.* your_script.py
#排除 NumPy 的 testing 和 f2py 模块,它们通常不需要打包。
pyinstaller --onefile --exclude-module=numpy.testing --exclude-module=numpy.f2py your_script.py
#排除 matplotlib 的测试模块,它们通常不是必需的
​pyinstaller --onefile --exclude-module=matplotlib.tests --exclude-module=matplotlib.testing your_script.py
#排除扩展功能在 mpl_toolkits 模块中,比如 mplot3d 和 basemap。
pyinstaller --onefile --exclude-module=mpl_toolkits.mplot3d --exclude-module=mpl_toolkits.basemap your_script.py

nuitka --onefile --nofollow-imports --include-module=scipy.interpolate --include-module=scipy.signal your_script.py
nuitka --onefile --nofollow-imports --include-module=numpy.core --include-module=numpy.linalg your_script.py


matplotlib 包含很多字体文件和样式文件,它们可能不必要。打包时可以选择性删除这些文件:

手动删除不必要的字体和样式文件:找到 matplotlib 的安装目录,然后进入 mpl-data/fonts 和 mpl-data/stylelib 文件夹,删除不需要的字体和样式文件。这样可以减少文件大小。

使用 PyInstaller 的 --add-data 和 --exclude-module 选项:可以控制添加和排除的数据。例如,仅添加所需的字体或样式文件:

pyinstaller --onefile --add-data "path/to/matplotlib/mpl-data/fonts;mpl-data/fonts" your_script.py


使用自定义 matplotlib 配置文件

matplotlib 使用一个配置文件(通常位于 ~/.matplotlib/matplotlibrc),这个文件控制 matplotlib 的默认行为。通过编辑这个文件,您可以指定默认字体、样式和不必要的功能,从而减少打包的大小。例如:

backend : Agg

==================================

Nuitka的使用

Nuitka 生成的包大小通常最小,啟動速度最快。支援 Windows、macOS 和 Linux。適合對性能有較高要求的應用。另外可以和pyinstaller配合,首先使用 Nuitka 编译,优化代码性能并减少不必要的 Python 解释器依赖,也可以混淆与保护,代码被转化为 C/C++ 代码并编译成机器码,这比简单的打包更难反编译。

nuitka --standalone --output-dir=dist example.py
cd dist
pyinstaller --onefile --add-data "./*:./" example.spec


單獨使用 Nuitka 编译 example.py 脚本,并生成一个可执行文件。以下是一些常用的 Nuitka 命令选项:

--standalone:生成独立的可执行文件,包含所有依赖项。

--onefile:将所有文件打包为单个可执行文件。

--enable-plugin=:启用某些插件(如 numpy、matplotlib 等),以优化支持特定的库。

--show-progress:显示编译进度。

执行以下命令来编译 Python 脚本:

pip install nuitka
nuitka --standalone --onefile --enable-plugin=numpy --enable-plugin=matplotlib example.py

调整 Nuitka 选项以优化输出

可以根据需要调整 Nuitka 的其他选项,以优化生成的可执行文件:


--lto(Link Time Optimization):启用链接时优化,可以进一步减小文件大小和提升性能。

--follow-imports:递归跟随所有导入,确保没有遗漏任何必要的模块。

--disable-console(Windows 专用):隐藏控制台窗口,适用于 GUI 应用程序。

例如,使用链接时优化和递归导入选项:

nuitka --standalone --onefile --lto --follow-imports example.py

如果打包的文件过大,您可以检查并排除不必要的模块。在 Nuitka 中,您可以使用 --nofollow-import-to 选项排除特定模块:

#排除 matplotlib.tests 模块(以及任何其他不需要的测试模块)
nuitka --standalone --onefile --nofollow-import-to=matplotlib.tests example.py


6會員
59Content count
ktest
留言0
查看全部
發表第一個留言支持創作者!
hls Ding的沙龍 的其他內容
計算梯度(高低變化速度)
from win32com.client import Dispatch path = "D:\PROGRAMMING\PythonCode\pypptx\image1.png" # 启动PowerPoint应用程序 ppt = Dispatch('PowerPoint.Applicatio
本篇文章將教你如何使用Python和PyQt5來建立一個GUI應用程式。PyQt5是一個相當流行的Python模組,透過這個文章你將學習如何使用它來建立一個互動式的應用程式。
這段程式碼假設您的XYZ資料存儲在名為"Sheet1"的工作表中的A1:Cn範圍內,其中n是資料行的數量。它將資料提取出來,然後在新建的工作表中按照網格的形式重新排列。
Vertexes和linedefs是構成doom關卡地圖的主要參數,在WAD的每個地圖區塊都會存放屬於該地圖的vertexes和linedefs。
計算梯度(高低變化速度)
from win32com.client import Dispatch path = "D:\PROGRAMMING\PythonCode\pypptx\image1.png" # 启动PowerPoint应用程序 ppt = Dispatch('PowerPoint.Applicatio
本篇文章將教你如何使用Python和PyQt5來建立一個GUI應用程式。PyQt5是一個相當流行的Python模組,透過這個文章你將學習如何使用它來建立一個互動式的應用程式。
這段程式碼假設您的XYZ資料存儲在名為"Sheet1"的工作表中的A1:Cn範圍內,其中n是資料行的數量。它將資料提取出來,然後在新建的工作表中按照網格的形式重新排列。
Vertexes和linedefs是構成doom關卡地圖的主要參數,在WAD的每個地圖區塊都會存放屬於該地圖的vertexes和linedefs。
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
本篇文章適合和我一樣有這些旅行興趣的人❤️ 會在旅行中洗衣服 會住有廚房的住宿 有不厭其煩整理物品的習慣 想要穿的漂亮但又不想帶太多衣服 因為通常在歐洲旅行都是坐大眾運輸走跳,雖然想當背包客,但無法做到,只能盡力精簡行李。
Thumbnail
PyInstaller 是一個強大的工具,可以將 Python 程式碼打包成獨立的可執行檔案,讓你的程式可以在沒有 Python 解釋器的情況下運行。這對於分享和分發你的 Python 應用程式非常有用。以下是使用 PyInstaller 的基本步驟:
在去西班牙交換之前,寶拉把行李分為以下幾個類別進行打包/整理: 1.和電相關的東西 2.一般日用品 3.文具與文件 4.衣物 5.藥品 6.台灣食物 7.台灣文化交流用品 8.隨身包小要有的東西 9.後背包/書包要有的東西 寶拉會在每個項目以過來人的經驗告訴你原因,字很多大家請在有耐心的時候看
Thumbnail
搬家打包,想到滿屋子的東西要打包就累了嗎?是真的,打包很累,但是好好打包可以省大錢!隱藏版搬家省錢技法,變身打包達人就對了。千萬不要小看打包這件事,打包做得好,大車變小車、二車變一車,費用不囉唆,立馬省一半!也可以自己不動手,找優質專業的搬家公司提供專業代搬家打包服務,既省力氣也省銀子。沒聽懂?沒關
這世界有乾燥的可能嗎? 一兩個月前的夏天,我的一篇在文學獎被遺棄的散文,和一首被大家所珍惜但還沒被看到的詩有幸刊登在不同平台上。陸續而至,那時,我正在進行生命中發誓的最後一場勞動,收到消息時,我邊在電腦前工作邊流下了眼淚。 我一邊哭一邊懷疑自己是不是太誇張,可是,我想珍惜我的哭泣。來到這裡之後,所有
Thumbnail
搬家打包技巧,你學會了多少?不可不知的4個實用技巧! 搬家打包是面對搬家時一定會遇到的惱人問題,不管是學生搬離宿舍、因工作離鄉背景,又或者是購入新屋等各種情況。每次要搬家就會想到還要整理家裡的物品,然後東西累積了一大堆,全部整理裝箱真的會讓人忙翻天,而且還要煩惱這些東西該怎麼分類包裝等等。
Thumbnail
搬家打包衣服的秘訣,掌握這5個秘訣就能輕鬆搬家! 搬家打包本身就是件繁瑣的事情,但其中面對「搬家衣服整理」又是一件頭痛事,尤其是愛買衣服的女生們。今天就要來教大家搬家衣服打包的幾個小秘訣,讓你在面對衣物整理時更加有頭緒!
Thumbnail
所謂的「軟體」,在法律上稱之為「電腦程式」,可包括各種應用軟體,以及作業系統軟體。軟體在法律上的保護,包含著作權法、專利法、營業秘密法、刑法、積體電路電路佈局保護法,甚至涉及公平交易法等。
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
本篇文章適合和我一樣有這些旅行興趣的人❤️ 會在旅行中洗衣服 會住有廚房的住宿 有不厭其煩整理物品的習慣 想要穿的漂亮但又不想帶太多衣服 因為通常在歐洲旅行都是坐大眾運輸走跳,雖然想當背包客,但無法做到,只能盡力精簡行李。
Thumbnail
PyInstaller 是一個強大的工具,可以將 Python 程式碼打包成獨立的可執行檔案,讓你的程式可以在沒有 Python 解釋器的情況下運行。這對於分享和分發你的 Python 應用程式非常有用。以下是使用 PyInstaller 的基本步驟:
在去西班牙交換之前,寶拉把行李分為以下幾個類別進行打包/整理: 1.和電相關的東西 2.一般日用品 3.文具與文件 4.衣物 5.藥品 6.台灣食物 7.台灣文化交流用品 8.隨身包小要有的東西 9.後背包/書包要有的東西 寶拉會在每個項目以過來人的經驗告訴你原因,字很多大家請在有耐心的時候看
Thumbnail
搬家打包,想到滿屋子的東西要打包就累了嗎?是真的,打包很累,但是好好打包可以省大錢!隱藏版搬家省錢技法,變身打包達人就對了。千萬不要小看打包這件事,打包做得好,大車變小車、二車變一車,費用不囉唆,立馬省一半!也可以自己不動手,找優質專業的搬家公司提供專業代搬家打包服務,既省力氣也省銀子。沒聽懂?沒關
這世界有乾燥的可能嗎? 一兩個月前的夏天,我的一篇在文學獎被遺棄的散文,和一首被大家所珍惜但還沒被看到的詩有幸刊登在不同平台上。陸續而至,那時,我正在進行生命中發誓的最後一場勞動,收到消息時,我邊在電腦前工作邊流下了眼淚。 我一邊哭一邊懷疑自己是不是太誇張,可是,我想珍惜我的哭泣。來到這裡之後,所有
Thumbnail
搬家打包技巧,你學會了多少?不可不知的4個實用技巧! 搬家打包是面對搬家時一定會遇到的惱人問題,不管是學生搬離宿舍、因工作離鄉背景,又或者是購入新屋等各種情況。每次要搬家就會想到還要整理家裡的物品,然後東西累積了一大堆,全部整理裝箱真的會讓人忙翻天,而且還要煩惱這些東西該怎麼分類包裝等等。
Thumbnail
搬家打包衣服的秘訣,掌握這5個秘訣就能輕鬆搬家! 搬家打包本身就是件繁瑣的事情,但其中面對「搬家衣服整理」又是一件頭痛事,尤其是愛買衣服的女生們。今天就要來教大家搬家衣服打包的幾個小秘訣,讓你在面對衣物整理時更加有頭緒!
Thumbnail
所謂的「軟體」,在法律上稱之為「電腦程式」,可包括各種應用軟體,以及作業系統軟體。軟體在法律上的保護,包含著作權法、專利法、營業秘密法、刑法、積體電路電路佈局保護法,甚至涉及公平交易法等。