pip3 install pyinstaller
簡單來講,打包分爲兩個步驟:緩存
程序目錄
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
並:編碼
myscript.spec
寫入到與myscript.py
相同的目錄中myscript.py
所在的相同目錄中建立一個build 目錄
(若是不存在的話)build 目錄
中寫入一些日誌文件(log files)
和工做文件(working files)
myscript.py
所在的相同目錄中建立一個dist 目錄
(若是不存在的話)dist 目錄
中寫入myscript 可執行目錄
dist 目錄
中,你能夠找到你打算分發給用戶的已打包好的應用程序(bundled app)
。一般狀況下,在命令行
你只會上聲明一個腳本文件
,若是你聲明瞭多個,那麼全部的腳本文件
都會被分析,幷包含到輸出
中。 可是,第一個聲明的腳本
提供了spec文件
的名稱與可執行目錄或文件
的名稱。而且,它的代碼也是在運行期間(run-time)
第一個被執行的。加密
針對某些特定的用途,你能夠經過編輯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"