Python第三方庫 — PyInstaller

快速入門

安裝

經過 PyPI 安裝

pip3 install pyinstaller

打包

簡單來講,打包分爲兩個步驟:緩存

  1. 進入你的程序目錄
  2. 針對你的Python程序腳本執行以下命令:
    pyinstaller yourprogram.py
    這將會在dist子目錄中生成打好的包

基本使用

命令行語法

pyinstaller 命令的語法是:bash

pyinstaller [選項腳本1 [腳本2 …] | spec文件app

選項

常規選項

選項 說明
-h, --help 顯示當前這個幫助信息,並退出
-v, --version 顯示程序版本信息,並退出
--distpathDIR 指定打包的應用程序所放置的位置(默認: ./dist)
--workpath WORKPATH 指定全部臨時工做文件(例如: .log 和 .pyz 等等)所放置的位置,.log、.pyz 等等(默認: ./build)
-y, --noconfirm 在不提示確認的狀況下,替換輸出目錄(默認: SPECPATH/dist/SPECNAME)
--upx-dir UPX_DIR UPX實用程序的路徑(默認:搜索執行路徑)
-a, --ascii 不包括對Unicode編碼的支持(默認:若是可用,就會盡量包括)
--clean 在構建以前,清理PyInstaller的緩存,而且移除臨時文件
--log-level LEVEL 指定在構建時,控制檯消息的詳細程度。級別(LEVEL)多是TRACE、DEBUG、INFO、WARN、ERROR和CRITICAL(默認: INFO)之一

輸出相關

選項 說明
-D, --onedir 建立一個包含了一個可執行文件的單目錄打包程序(默認)
-F, --onefile 建立一個單文件打包的可執行程序
--specpathDIR 存放生成的spec文件的目錄(默認:當前目錄)
-n NAME, --name NAME 要分配給打包應用程序和spec文件的名字(默認:第一個腳本文件的基本名稱)

打包與搜索相關

選項 說明
--add-data <SRC;DEST or SRC:DEST> 要添加到可執行文件的額外的非二進制文件或目錄。路徑分隔符是特定於平臺的(os.pathsep,即,Windows平臺是 「;」 ,而對於大多數Unix平臺是 「:」)。這個選項可使用屢次
--add-binary <SRC;DEST or SRC:DEST> 要添加到可執行文件的額外的二進制文件。這個選項可使用屢次
-p DIR, --paths DIR 用於導入的搜索路徑(相似於使用PYTHONPATH)。容許以 「:」 分隔多個路徑,或者屢次使用該選項
--hidden-import MODULENAME, --hiddenimport MODULENAME 聲明腳本代碼中不可見的一個導入。該選項可使用屢次
--additional-hooks-dir HOOKSPATH 用於搜索鉤子的額外路徑。這個選項可使用屢次
--runtime-hook RUNTIME_HOOKS 定製運行時鉤子文件的路徑。一個運行時鉤子是與可執行文件綁在一塊兒的代碼,而且會在任何其餘代碼或模塊以前執行,以設置運行時環境的特定功能。該選項可使用屢次
--exclude-module EXCLUDES 須要忽略的可選模塊或包(使用Python名,而不是路徑名),就像它沒有被找到同樣。這個選項可使用屢次
--keyKEY 用於加密Python字節碼的密鑰

生成方式

選項 說明
-d, --debug 告知引導加載器,讓其在初始化和啓動打包的應用程序時,發送進度消息。用於診斷缺乏導入的問題
-s, --strip Apply a symbol-table strip to the executable and shared libs。(建議不要在 Windows 上使用)
--noupx 不要使用UPX(即便它可用),在 Windows 和 *nix 之間的做用不一樣

不多使用的特殊選項

打包

在大多數的簡單狀況下,將當前目錄設置爲你myscript.py 程序的位置,並執行:ui

pyinstaller myscript.py

打包過程

PyInstaller會分析myscript.py並:編碼

  1. myscript.spec寫入到與myscript.py相同的目錄中
  2. 在與myscript.py所在的相同目錄中建立一個build 目錄(若是不存在的話)
  3. build 目錄中寫入一些日誌文件(log files)工做文件(working files)
  4. 在與myscript.py所在的相同目錄中建立一個dist 目錄(若是不存在的話)
  5. dist 目錄中寫入myscript 可執行目錄
  6. dist 目錄中,你能夠找到你打算分發給用戶的已打包好的應用程序(bundled app)

打包多個程序腳本文件

一般狀況下,在命令行你只會上聲明一個腳本文件,若是你聲明瞭多個,那麼全部的腳本文件都會被分析,幷包含到輸出中。 可是,第一個聲明的腳本提供了spec文件的名稱與可執行目錄或文件的名稱。而且,它的代碼也是在運行期間(run-time)第一個被執行的。加密

關於Spec文件的說明

針對某些特定的用途,你能夠經過編輯myscript.spec的內容來定製。在完成編輯後,你須要向pyinstaller 命令提供這個spec文件,而再也不是那個腳本命令行

pyinstaller myscript.spec

myscript.spec 文件包含了由pyinstaller(或pyi-makespec)以腳本文件做爲參數運行時所指定的選項所提供的大部分信息。 在使用spec文件運行pyinstaller時,一般不須要指定任何選項。由於,經過spec文件構建時,只有少數命令行選項會起做用。debug

經過路徑指定

你甚至能夠經過指定腳本文件路徑spec文件路徑來運行pyinstaller,例如:日誌

  • Linux/Mac上:
    pyinstaller options… ~/myproject/source/myscript.py
  • Windows上:
    pyinstaller "C:\Documents and Settings\project\myscript.spec"
相關文章
相關標籤/搜索