在前面一篇介紹 pyinstaller 工具的時候咱們僅僅只是介紹了將單個文件製做成 exe 程序 : 📏用Python工具Pyinstaller製做exe應用程序 , 接下來咱們將介紹如何將一個項目製做成 exe 程序, pyinstaller 尚未安裝建議查看上面的鏈接html
以個人項目做爲示例展開介紹python
參數 | 參數全稱 | 參數說明 |
---|---|---|
-D | –onedir | 打包多個文件,在dist中生成不少依賴文件,適合以框架形式編寫工具代碼,該方式代碼較易於維護 |
#項目的根目錄 - conf: - # 用於存放配置文件的文件夾 - settings.py - core: - # 核心業務代碼 - src.py - db: - # 用於存放文件數據 - db_handler.py - song.json - interface: - # 接口, 接口內寫獲取數據前的邏輯代碼,經過後才能獲取數據 - bank.py - shopping.py - user.py - lib: - # 存放公共功能文件 - common.py - log: - # 用於存放日誌文件,日誌用於記錄用戶的操做記錄 - log.log - atm.txt: - # 項目說明書, 用戶告訴使用者項目的操做 - start.py - # 啓動文件
上面不用看, 直接看下面的linux
執行文件放在項目目錄下面json
進入到項目目錄下, 就是執行文件所在的目錄windows
pyinstaller -D run.py
數組
執行成功後後生成臨時文件夾 build 和 dist (這兩個先不用管), 還有一個 run.spec 文件框架
打開 run.spec 文件添加下面兩行(不添加很容易出錯, 踩過不少次) :工具
import sys # 先導入sys模塊 sys.setrecursionlimit(100000) # 設置最大遞歸深度 (緣由是程序裏可能出現遞歸調用)
保存退出 , 接着執行pyinstaller run.spec
, 等待完成, 中間有讓你確認的一個步驟, 按 y 就能夠ui
出現 successfully 以後進入到 dist 文件下找到 run.exe 運行就能夠了編碼
🍊
出現successfully
🍊
保存退出
🍊
遇到這個按 y 回車, 出現 successfully 說明製做成功
🍊
到 dist 路徑下找到 run.exe 雙擊運行
🍊
功能正常
# -*- mode: python -*- block_cipher = None # 以py文件爲輸入,分析py文件的依賴模塊,並生成相應的信息 a = Analysis(['xxx.py'], # 要打包.py文件名列表,和xxx.py同級能夠不一樣添加 pathex=['D:\\abc\\def\\project_v1.0'], # 項目路徑 binaries=[], # 程序調用外部pyd、dll文件(二進制文件路徑)以數組形式傳入;例:('D:\\pro\\text.dll', 'pro'),將'pdftotext.dll'pro,與原項目結構一致便可 datas=[], # 存放的資源文件(圖片、文本等靜態文件)以數組造成傳入;例:('D:\\static\\c.ioc','static'),將'cc.ioc'打包以後放在static目錄,與原項目結構一致便可 hiddenimports=[], # pyinstaller解析模塊時可能會遺漏某些模塊(not visible to the analysis phase),形成打包後執行程序時出現相似No Module named xxx;這時就須要在hiddenimports中加入遺漏的模塊 hookspath=[], runtime_hooks=[], excludes=[], # 去除沒必要要的模塊import,寫在excludes中添加此模塊 win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher) # .pyz的壓縮包,包含程序運行須要的全部依賴 pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) # 根據Analysis和PYZ生成單個exe程序所須要的屬性及其配置 exe = EXE(pyz, a.scripts, exclude_binaries=True, name='xxx', # 生成exe文件的名字 debug=False, # debug模式 strip=False, upx=True, console=False, # 是否在打開exe文件時打開cmd命令框 icon='C:\Users\xx.ico' ) # 設置exe程序圖標,ico格式文件(16*16) # 收集前三個部分的內容進行整合,生成程序所須要的依賴包,及資源文件和配置 coll = COLLECT(exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=True, name='fastplot')
from...inport...
的導入方式參數 | 參數全稱 | 參數說明 |
---|---|---|
-F | –onefile | 打包成單個可執行文件,若是你的代碼都寫在一個.py文件,則可使用,若是是多個.py文件,建議不要使用。 |
-D | –onedir | 打包多個文件,在dist中生成不少依賴文件,適合以框架形式編寫工具代碼,該方式代碼較易於維護。 |
-K | –tk | 在部署時包含 TCL/TK。 |
-a | –ascii | 不包含編碼.在支持Unicode的python版本上默認包含全部的編碼。 |
-d | –debug | 產生debug版本的可執行文件 |
-w | –windowed,–noconsole | 使用Windows子系統執行.當程序啓動的時候不會打開命令行(僅對Windows有效) |
-c | –nowindowed,–console | 使用控制檯子系統執行(默認)(只對Windows有效) |
pyinstaller -c xxxx.py | ||
pyinstaller xxxx.py --console | ||
-s | –strip | 可執行文件和共享庫將run through strip。 |
注意Cygwin的strip可能使普通的win32 Dll沒法使用 | ||
-X | –upx | 若是有UPX安裝(執行Configure.py時檢測),則會壓縮執行文件(Windows系統中的DLL也會) |
-o DIR | –out=DIR | 指定spec文件的生成目錄,若是沒有指定,並且當前目錄是PyInstaller的根目錄,會自動建立一個用於輸出(spec和生成的可執行文件)的目錄.若是沒有指定,而當前目錄不是PyInstaller的根目錄,則會輸出到當前的目錄下。 |
-p DIR | –path=DIR | 設置導入路徑(和使用PYTHONPATH效果類似) 能夠用路徑分割符(Windows使用分號,Linux使用冒號)分割,指定多個目錄.也可使用多個-p參數來設置多個導入路徑,讓pyinstaller本身去找程序須要的資源 |
-i <FILE.ICO> | –icon=<FILE.ICO> | 將file.ico添加爲可執行文件的資源(只對Windows系統有效),改變程序的圖標 pyinstaller -i ico路徑 xxxxx.py |
–i <FILE.EXE, N> | –icon=<FILE.EXE, N> | 將file.exe的第n個圖標添加爲可執行文件的資源(只對Windows系統有效) |
-v FILE | –version=FILE | 將verfile做爲可執行文件的版本資源(只對Windows系統有效) |
-n NAME | –name=NAME | 可選的項目(產生的spec的)名字.若是省略,第一個腳本的主文件名將做爲spec的名字 |
---end---