python文件打包方式(使用pyinstaller)
PyInstaller是一個(gè)流行的Python打包工具,它可以將Python代碼打包成可執(zhí)行文件,使得你可以在沒有安裝Python解釋器的環(huán)境中運(yùn)行你的應(yīng)用程序。
安裝
使用pip命令來安裝PyInstaller。在終端或命令提示符中運(yùn)行以下命令:
打包
先安裝所有需要的依賴
?pip install -r .\requirements.txt
方式一:使用打包命令
簡單命令:
pyinstaller main.py
復(fù)雜命令:
Window - Powershell:
pyinstaller -n SnakeGame `
-i img/icon.png `
--clean --onedir `
--windowed `
--add-data="img;img" `
--exclude-module="numpy" `
main.pyWindow - cmd:
# 打包到一個(gè)目錄 pyinstaller -n PID_Tool -i img/logo.ico ^ --clean --onedir ^ --add-data="res;res" ^ --add-data="img;img" ^ --exclude-module="matplotlib" ^ app.py
Linux/Mac:
# 打包成單文件 pyinstaller -n PID_Tool -i img/logo.ico \ --clean --onefile \ --add-data="res:res" \ --add-data="img:img" \ --exclude-module="matplotlib" \ main.py
方式二:編寫打包腳本
假如你的程序名稱為PID_GUI_Tool,程序入口文件為main.py,則在入口文件同級(jí)目錄創(chuàng)建一個(gè)package.py,寫入如下內(nèi)容
import PyInstaller.__main__
# 這里的是不需要打包進(jìn)去的三方模塊,可以減少軟件包的體積
excluded_modules = [
"scipy",
"matplotlib",
]
append_string = []
for mod in excluded_modules:
append_string += [f'--exclude-module={mod}']
PyInstaller.__main__.run([
'-y', # 如果dist文件夾內(nèi)已經(jīng)存在生成文件,則不詢問用戶,直接覆蓋
# '-p', 'src', # 設(shè)置 Python 導(dǎo)入模塊的路徑(和設(shè)置 PYTHONPATH 環(huán)境變量的作用相似)。也可使用路徑分隔符(Windows 使用分號(hào);,Linux 使用冒號(hào):)來分隔多個(gè)路徑
'main.py', # 主程序入口
'--onedir', # -D 文件夾
# '--onefile', # -F 單文件
# '--nowindowed', # -c 無窗口
'--windowed', # -w 有窗口
'-n', 'PID_GUI_Tool',
'-i', 'img/logo.ico',
'--add-data=res;res', # 用法:pyinstaller main.py –add-data=src;dest。windows以;分割,mac,linux以:分割
'--add-data=img;img', # 用法:pyinstaller main.py –add-data=src;dest。windows以;分割,mac,linux以:分割
*append_string
])
執(zhí)行python package.py或直接在編輯器中運(yùn)行即可。
打好包,可執(zhí)行程序在同級(jí)目錄的dist子目錄即可找到
問題及解決
如果打包時(shí),出現(xiàn)如下報(bào)錯(cuò):
from PIL import Image
ModuleNotFoundError: No module named 'PIL'
可通過安裝如下依賴解決:
pip install pillow
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)list反轉(zhuǎn)實(shí)例匯總
這篇文章主要介紹了Python實(shí)現(xiàn)list反轉(zhuǎn)的方法,實(shí)例總結(jié)了關(guān)于list的各種較為常見的操作技巧,需要的朋友可以參考下2014-11-11
python基于BeautifulSoup實(shí)現(xiàn)抓取網(wǎng)頁指定內(nèi)容的方法
這篇文章主要介紹了python基于BeautifulSoup實(shí)現(xiàn)抓取網(wǎng)頁指定內(nèi)容的方法,涉及Python使用BeautifulSoup模塊解析html網(wǎng)頁的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
利用Python?實(shí)現(xiàn)分布式計(jì)算
這篇文章主要介紹了利用Python?實(shí)現(xiàn)分布式計(jì)算,文章通過借助于?Ray展開對(duì)分布式計(jì)算的實(shí)現(xiàn),感興趣的小伙伴可以參考一下2022-05-05
Python中set與frozenset方法和區(qū)別詳解
這篇文章主要介紹了Python中set與frozenset方法和區(qū)別詳解的相關(guān)資料,需要的朋友可以參考下2016-05-05
教你用Type Hint提高Python程序開發(fā)效率
本文通過介紹和實(shí)例教大家如何利用Type Hint來提升Python程序開發(fā)效率,對(duì)大家使用python開發(fā)很有幫助,有需要的參考學(xué)習(xí)。2016-08-08

