歡迎您光臨本站 註冊首頁

PyInstaller執行原理及常用操作詳解

←手機掃碼閱讀     sl_ivan @ 2020-06-14 , reply:0

pyinstaller 屬於Python第三方庫,使用前需先安裝

# 首先安裝pyinstaller
 pip install pyinstaller
 

PyInstaller生成可執行程式
 

  # PyInstaller 工具的命令語法如下:    # 1、第一種  pyinstaller options ~/myproject/source/myscript.py    # 2、第一種  pyinstaller "C:Documents and Settingsprojectmyscript.spec"

 

PyInstaller 支援的常用選項
 


-h,--help檢視該模組的幫助資訊
-F,-onefile

dist中產生單個的可執行檔案   

eg:pyinstaller -F demo.py

-D,--onedir

產生一個目錄(包含多個檔案)作為可執行程式   

eg:pyinstaller -D demo.py

-a,--ascii不包含 Unicode 字符集支援
-d,--debug產生 debug 版本的可執行檔案
-w,--windowed,--noconsolc

指定程式執行時不顯示命令列視窗(僅對 Windows 有效)   

eg:pyinstaller -w demo.py

-c,--nowindowed,--console

指定使用命令列視窗執行程式(僅對 Windows 有效)    

eg:pyinstaller -c demo.py

-o DIR,--out=DIR指定 spec 檔案的生成目錄。如果沒有指定,則預設使用當前目錄來生成 spec 檔案
-p DIR,--path=DIR

設定 Python 匯入模組的路徑(和設定 PYTHONPATH 環境變數的作用相似)。也可使用路徑分隔符(Windows 使用分號,Linux 使用冒號)來分隔多個路徑

eg:pyinstaller -p E:pythonLibsite-packages demo.py

-n NAME,--name=NAME指定專案(產生的 spec)名字。如果省略該選項,那麼第一個指令碼的主檔名將作為 spec 的名字


1、建立一個 app 目錄,在該目錄下建立一個 入口app.py 檔案

# 進入該app目錄內,執行以下語法
 pyinstaller -F app.py
 

當生成完成後,將會在此 app 目錄下看到多了一個 dist 目錄,並在該目錄下看到有一個 app.exe 檔案,這就是使用 PyInstaller 工具生成的 exe 程式。

在命令列視窗中進入 dist 目錄下,在該目錄執行 app.exe ,將會看到該程式執行結果。

註:若程式沒有視覺化介面,不能雙擊執行程式

2、建立一個 app 目錄,在該目錄下建立一個 入口app.py 檔案

# 進入該app目錄內,執行以下語法
 pyinstaller -D app.py
 

執行上面命令,將看到詳細的生成過程。當生成完成後,將會在 app 目錄下看到多了一個 dist 目錄,並在該目錄下看到有一個 app 子目錄,在該子目錄下包含了大量 .dll 檔案和 .pyz 檔案,它們都是 app.exe 程式的支撐檔案。在命令列視窗中執行該 app.exe 程式,同樣可以看到與前一個 app.exe 程式相同的輸出結果。

3、高階用法

當有特殊需求,比如打包圖片資原始檔時,就必須用到它的高階用法。

首先得了解spec檔案,簡而言之,spec檔案就是一份告訴pyinstaller如何打包的配置檔案。
 可以透過pyi-makespec demo.py來生成demo.spec檔案。其內容如下:

  # -*- mode: python -*-    block_cipher = None    resources = (("inspurer.db", "."), ("dlib_face_recognition_resnet_model_v1.dat", "."),   ("shape_predictor_68_face_landmarks.dat", "."), ("close_logcat.png", ".")   , ("open_logcat.png", "."), ("finish_register.png", "."), ("new_register.png", ".")   , ("start_punchcard.png", "."), ("end_puncard.png", "."), ("index.png", "."))    a = Analysis(['workAttendanceSystem.py'],         pathex=['C:UserslenovoDesktop	estpython'],         binaries=[],         datas=resources,         hiddenimports=[],         hookspath=[],         runtime_hooks=[],         excludes=[],         win_no_prefer_redirects=False,         win_private_assemblies=False,         cipher=block_cipher,         noarchive=False)  pyz = PYZ(a.pure, a.zipped_data,         cipher=block_cipher)  exe = EXE(pyz,       a.scripts,       [],       exclude_binaries=True,       name='workAttendanceSystem',       debug=False,       bootloader_ignore_signals=False,       strip=False,       upx=True,       console=True )  coll = COLLECT(exe,          a.binaries,          a.zipfiles,          a.datas,          strip=False,          upx=True,          name='workAttendanceSystem')

 

對於上面這個檔案,需要注意兩點:

除了resources配置是我新增修改之外,其餘全是自動生成,這個配置是用來新增資原始檔的。
 

pathex是工程的根目錄。

生成並配置好spec檔案後,我們可以透過pyinstaller demo.spec來執行打包任務。

                                                       

   


[sl_ivan ] PyInstaller執行原理及常用操作詳解已經有319次圍觀

http://coctec.com/docs/python/shhow-post-238529.html