Python打包成exe(windows)或者app(mac)實踐
一、問題版本
為了避免版本不一問題,想要肯定成功的可以按照我的版本來
- 我的python版本為3.8.1
- 安裝的pyinstaller為4.5.1
二、windows安裝
先卸載舊的,如果從沒安裝過可以省略
pip uninstall pyinstaller -y
然后安裝4.5.1,并且為避免出現(xiàn)下載連接超時指定鏡像
pip install pyinstaller==4.5.1 -i https://pypi.doubanio.com/simple/
然后進入你寫好的python文件的文件夾中,打開命令行窗口
pyinstaller -F -w -i app_icon.ico --add-binary "D:\python\DLLs\tcl86t.dll;." --add-binary "D:\python\DLLs\tk86t.dll;." tosolist.py
解釋:
-F:打包成 單個 .exe 文件(所有依賴都整合到一個文件里,方便攜帶);-w:打包成 無控制臺窗口 的程序(打開 .exe 時不會彈出黑框,符合 “窗口版” 需求);-i app_icon.ico:設置圖標(也可以先刪掉,等打包完成之后再設定圖標也可以);- --add-binary "D:\python\DLLs\tcl86t.dll;." --add-binary "D:\python\DLLs\tk86t.dll;."
- 這部分是指定你的python中的dll文件,避免出現(xiàn)未知錯誤,如果不寫也能成功那更好。
- 如果要寫,那么請將路徑更換成你自己的路徑。如果找不到,那就在控制臺輸入
where pythontosolist.py這個就是你要打包的python文件名稱
到這步就完成了,雙擊dist文件夾中的exe文件就行了。你也可以發(fā)送快捷方式到桌面。
三、mac安裝
大致邏輯相同
# 先升級 pip(避免舊版本報錯) python3 -m pip install --upgrade pip -i https://pypi.doubanio.com/simple/ # 安裝 PyInstaller(無需指定版本,默認會裝兼容當前 Python 的穩(wěn)定版) python3 -m pip install pyinstaller -i https://pypi.doubanio.com/simple/
然后進入到對應文件夾下
#輸入以下命令,回車開始打包(針對 Tkinter 程序優(yōu)化,避免 macOS 下的依賴缺失): pyinstaller -F -w --add-binary "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/lib-dynload/_tkinter.cpython-38-darwin.so:." --add-data "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/tkinter:tkinter" password_manager_gui_fixed.py
命令參數(shù)解釋( macOS 重點?。?/h4>
| 參數(shù) | 作用 |
|---|---|
| -F | 打包成「單個文件」(最終會生成 .app 應用,而非零散文件) |
| -w | 無控制臺窗口(打開 .app 時不彈出終端黑框,符合窗口版需求) |
| --add-binary "xxx:." | 強制添加 macOS 版 Tkinter 的核心動態(tài)庫(_tkinter.cpython-38-darwin.so),避免 “找不到 Tkinter” 錯誤 |
| --add-data "xxx:tkinter" | 復制 Tkinter 的依賴文件到打包目錄,確保窗口控件正常顯示 |
| password_manager_gui_fixed.py | 你的 Python 腳本文件名(必須和實際一致) |
路徑注意事項
上述命令中的 3.8 對應 Python 3.8 版本,若你的 Python 是 3.9,需將路徑中的 3.8 改成 3.9(比如 /Library/Frameworks/Python.framework/Versions/3.9/...);
若不知道 Tkinter 依賴的具體路徑,可在終端輸入以下命令查詢,然后替換到打包命令中:
# 查找 _tkinter 動態(tài)庫路徑 find /Library/Frameworks/Python.framework -name "_tkinter.cpython-*.so" # 查找 tkinter 依賴文件夾路徑 find /Library/Frameworks/Python.framework -name "tkinter" -type d
然后依然在dist文件夾中使用app文件就可以了
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python使用Bokeh庫實現(xiàn)實時數(shù)據(jù)的可視化
Python語言以其豐富的數(shù)據(jù)科學生態(tài)系統(tǒng)而聞名,其中Bokeh庫作為一種功能強大的可視化工具,為實時數(shù)據(jù)的可視化提供了優(yōu)秀的支持,本文將介紹如何使用Bokeh庫實現(xiàn)實時數(shù)據(jù)的可視化,并提供相關代碼實例,需要的朋友可以參考下2024-05-05
pytorch 中autograd.grad()函數(shù)的用法說明
這篇文章主要介紹了pytorch 中autograd.grad()函數(shù)的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05
Django 解決distinct無法去除重復數(shù)據(jù)的問題
這篇文章主要介紹了Django 解決distinct無法去除重復數(shù)據(jù)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05

